Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HK2相当于Guice';s静态注入绑定和ProviderBinding_Java_Guice_Hk2 - Fatal编程技术网

Java HK2相当于Guice';s静态注入绑定和ProviderBinding

Java HK2相当于Guice';s静态注入绑定和ProviderBinding,java,guice,hk2,Java,Guice,Hk2,我有如下代码 public class ProcessorFactory { @Inject static Provider<Processor> processorProvider; ... } public class ProcessorProvider implements Provider<Processor> { ... @Override public Processor get() { ... } } 然而,我的项目是由其

我有如下代码

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

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

然而,我的项目是由其他人使用HK2建立的。有人能帮我做HK2的同等装订吗?似乎只有bind、bindAsContract和bindFactory选项…

HK2使用工厂,而Guice使用提供者。如果很难将提供程序重新实现为工厂,请创建一个实现
工厂
并接受提供程序作为构造函数参数的类。

HK2使用工厂,而Guice使用提供程序。如果将提供程序重新实现为工厂非常困难,请创建一个实现
Factory
并接受提供程序作为构造函数arg的类。

啊,我明白了,谢谢。静态注射怎么样?
requestStaticInjection
是否有等价物?由于静态注入生命周期相关的困难,HK2不执行静态注入(您何时可以确定它已被注入?)。如果您需要静态注入,请使用非静态注入创建一个类(可能在@Immediate scope中),并在该类的后构造中设置您需要的静态setAh,我明白了,谢谢。静态注射怎么样?
requestStaticInjection
是否有等价物?由于静态注入生命周期相关的困难,HK2不执行静态注入(您何时可以确定它已被注入?)。如果您需要静态注入,请使用非静态注入创建一个类(可能在@Immediate scope中),并在该对象的后构造中设置您需要设置的静态
bind(Processor.class).toProvider(ProcessorProvider.class).in(ServletScopes.REQUEST);

requestStaticInjection(ProcessorFactory.class);