我不确定我是否理解这两个如何使用@Inject 进行注入的确切方式,但我最近开发了一个应用程序,在开发的第一阶段,我使用 HK2 的 @inject 使用依赖注入并使用抽象绑定器绑定资源,它工作得很好。然后我想再注入一个价值。我需要使用@Inject 注入一个基本的字符串值,并且这个值是从一个用@Produces 注释的方法中获得的。但是当我这样做时,我得到了这个错误。
org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at Injectee(requiredType=String
我在很多地方读到过,很多人认为 CDI 和 HK2 在合作时遇到了一些问题。我无法解决这个问题。
当我在两个不同的独立程序中尝试上述场景时,它们运行良好。但是当我集成它们时,我收到上述错误消息。
这是我在 java 的 jira 中发现的: https ://java.net/jira/browse/GLASSFISH-20597
我的例子是:
public ClassA{
@Inject
ClassBInter b;
}
我在抽象活页夹中绑定了 b 类
new AbstractBinder(){
@Override
protected void configure() {
//Binding the implementation to the interface
bind(ClassBImpl.class).to(ClassBInter.class);
}
}
这工作得很好。
但是当我尝试在同一系统中将@Inject 添加到 String 的以下概念时,它会因上述异常而崩溃
public ClassC{
@Inject
String name;
}
生产者类
public ProducerClass{
@Produces
public String getName(){
return "henry Ford";
}
}