是否有一种方法可以达到here所述的相同结果,而不取决于球衣而是纯粹的jax-rs?我想创建一个自定义注入提供程序,例如Jersey,以便可以注入MyClass从HttpServletRequest中提取自定义数据
@Inject
protected MyClass myClass;
我还发现this discussion很有用,它与java.util.function.Supplier
相同,但是此代码中仍需要Jersey:
bindFactory(MyFactoryOrSupplier.class)
.to(MyClass.class)
.in(RequestScoped.class);
编辑:
CDI也是一个很好的选择,但纯jax-rs是可取的
答案 0 :(得分:0)
我找到了使用CDI的解决方案:
@ApplicationScoped
public class MyFactoryOrSupplier {
@Produces
@RequestScoped
public IMyClass getMyClass(@Context HttpServletRequest request) {
return (IMyClass) request.getAttribute("MyInjectedClass");
}
}
,然后在我的servlet中:
@Inject
protected IMyClass myClass;
beans.xml
bean-discovery-mode="annotated"
实际上是MyClass implements IMyClass
,因为我没有MyClass
拥有没有参数的公共构造函数,这确实可以解决问题。