[英]How to inject an unbound generic type in HK2?
我正在使用Jersey 2.9編寫Web服務,並且還在使用DI的HK2。 我有一個類處理與數據庫的連接,該連接可以像這樣實例化:
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中無法指定這樣的綁定?
最好的祝福,
安德烈亞斯
HK2使用與CDI相同的類型匹配規則,這意味着注入DBConnection的用例將無法正常工作,而僅使用DBConnection即可。 如果這對您來說足夠重要,請輸入一個Jira,我們可以考慮讓HK2偏離CDI規則。 我也認為DBConnection也可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.