0

有没有一种方法可以达到此处描述的相同结果,而不是取决于球衣,而是纯粹的 jax-rs?我想创建一个像 Jersey 这样的自定义注入提供程序,这样我就可以注入 MyClass 从 HttpServletRequest 中提取自定义数据

@Inject
protected MyClass myClass;

我还发现这个讨论很有用,它的工作原理相同,java.util.function.Supplier但在这段代码中仍然需要 Jersey:

bindFactory(MyFactoryOrSupplier.class)
.to(MyClass.class)
.in(RequestScoped.class);

编辑:

CDI 也是一个不错的选择,但更可取的是纯 jax-rs

4

1 回答 1

0

我使用 CDI 找到了这个解决方案:

@ApplicationScoped
public class MyFactoryOrSupplier {

    @Produces
    @RequestScoped
    public IMyClass getMyClass(@Context HttpServletRequest request) {
        return (IMyClass) request.getAttribute("MyInjectedClass");
    }
}

然后在我的 servlet 中:

@Inject
protected IMyClass myClass;

豆类.xml

bean-discovery-mode="annotated"

实际上MyClass implements IMyClass是因为我不知道MyClass有一个没有参数的公共构造函数,这就是诀窍。

于 2018-08-09T13:43:50.487 回答