我正在使用 Jersey 2.9 编写一个网络服务,并且我也在使用 HK2 进行 DI。我有一个类可以处理与数据库的连接,可以像这样实例化:
public class DBHandler {
private DBConnection<?> dbConnection;
@Inject
public DBHandler(DBConnection<?> dbConnection) {
this.dbConnection = dbConnection;
}
}
如您所见,字段dbConnection
具有无界的泛型类型。通过绑定实现目前如下所示:
public class MyProductionBinder extends AbstractBinder {
@Override
protected void configure() {
bind(ClientServerDBConnection.class).to(new TypeLiteral<DBConnection<?>>() {});
}
}
但是,在运行时会引发以下异常;
Caused by: org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at Injectee(requiredType=DBConnection<?>,parent=DBHandler,qualifiers={}),position=0,optional=false,self=false,unqualified=null,731556610)
如果我将变量声明DBHandler
变成这样的原始类型:
public class DBHandler {
private DBConnection dbConnection;
@Inject
public DBHandler(DBConnection dbConnection) {
this.dbConnection = dbConnection;
}
}
它按预期工作。
我是否遗漏了什么,或者在 HK2 中无法指定这样的绑定?
最好的问候,
安德烈亚斯