【问题标题】:HK2 equivalent to Guice's static injection binding and ProviderBindingHK2相当于Guice的静态注入绑定和ProviderBinding
【发布时间】:2016-09-29 19:31:52
【问题描述】:

我有如下代码

public class ProcessorFactory {
  @Inject static Provider<Processor> processorProvider;
  ...
}

public class ProcessorProvider implements Provider<Processor> {
  ...
  @Override
  public Processor get() {
    ...
  }
}

在 Guice 中,绑定是按如下方式完成的

bind(Processor.class).toProvider(ProcessorProvider.class).in(ServletScopes.REQUEST);

requestStaticInjection(ProcessorFactory.class);

但是我的项目是由其他人使用 HK2 设置的。有人可以帮我处理 HK2 中的等效绑定吗?似乎只有 bind、bindAsContract 和 bindFactory 选项...

【问题讨论】:

    标签: java guice hk2


    【解决方案1】:

    HK2 使用工厂,而 Guice 使用提供者。如果将您的提供者重新实现为工厂非常困难,HK2 devs recommend 创建一个实现 Factory&lt;T&gt; 并接受提供者作为构造函数 arg 的类。

    【讨论】:

    • 啊,我明白了,谢谢。静态注入呢? requestStaticInjection 是否有等价物?
    • HK2 不进行静态注入,因为与静态注入的生命周期相关的困难(您什么时候可以确定它已被注入?)。如果您需要静态注入,请创建一个具有非静态注入的类(可能在 @Immediate 范围内)并在该事物的 postConstruct 中设置您需要设置的静态
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 2015-07-13
    • 2012-10-16
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 2019-09-10
    相关资源
    最近更新 更多