java - bindFactory 不注入(inject)字段

标签 java jersey jax-rs hk2

我有这段代码来提供自定义可注入(inject)对象:

    config.register(new AbstractBinder() {
        @Override
        protected void configure() {
            delegatorFactory = ...; //custom factory to delegate to
            bindFactory(new Factory<Object>() {
                @Inject
                private Provider<ContainerRequestContext> req;

                @Override
                public void dispose(Object arg0) {
                }

                @Override
                public Object provide() {
                    // req is needed but is null
                }
            }).to(delegatorFactory.getType()).in(RequestScoped.class);
        }
    });

不幸的是,正如 Provide() 中的注释所揭示的那样,执行时不会注入(inject) req 字段(我需要该位置的 ContainerRequestContext)。 我缺少什么才能使它像这样工作,即注入(inject)工厂的字段?

最佳答案

将其与类绑定(bind)。大多数时候,当您开始自己实例化东西时,您就会失去注入(inject)的好处。所以只需使用一个类

bindFactory(YourFactoryClass.class)
<小时/>

更新

要让注入(inject)器手动注入(inject)工厂,您可以使用功能

public class YourFeature implements Feature {
    @Override
    public void configure(FeatureContext context) {
        final ServiceLocator locator = ServiceLocatorProvider.getLocator(context);

        locator.inject(anyObject);
  
        context.register(new YourAbstractBinder());
    }
}

config.register(new YourFeature());

关于java - bindFactory 不注入(inject)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39839827/

相关文章:

java - 休息| @生产和@消费: why dont they both get called for same MIME-type

java - 在后端使用 Jersey 上传大文件

java - 获取 "MessageBodyWriter not found for media type=application/json"尝试通过 JAX-RS Web 服务发送 JSON 对象

java - GTX 3.0 网格小部件 - 如何刷新/重新加载网格

java - 这个 JDK 错误消息是什么意思?

java - 监听器和计时器之间的通信

java - com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException

java - JSP中多部分请求时获取参数

enums - 使用 @XmlEnumValue 映射 JAX-RS 枚举

java - 使用 Jersey 和 JAX-RS 进行 POST 上传时换行符丢失