我有獲取並保持一個API令牌(簡化的)的模塊:注入依賴成吉斯模塊
@Singleton
public class KeyHolderModule extends AbstractModule {
// This doesn't seem to be injected
private @Inject TokenConnector connector;
private DateTime keyLastRefreshed;
private String key;
private Credentials creds = config.getCreds();
@Override protected void configure() {
this.key = connector.getToken(creds);
this.keyLastRefreshed = DateTime.now();
}
@Provides @Named("apiKey") public String getKey() {
// logic to check key last refreshed and handle generating a new one
return this.key;
}
}
我上線一個空指針錯誤,我試圖訪問連接器(this.key = connector.getToken(creds);
) ,所以連接器顯然沒有正確接線。
我試着創建一個構造函數,並使用@Inject那裏,但我手動將這些模塊通過new
添加到我的應用程序bootstrap類中的列表中,所以這是有點。
顯然我錯過了這裏的東西 - 我可能只是new
上漲了TokenConnector
在這種情況下,因爲它本身沒有任何依賴關係,但是這並不能解決我根本無法理解這裏發生的事情。所以,如果你想看到(簡化)其他代碼段,或者簡化了這段代碼,請告訴我。
或者我認爲另一種方法是綁定一個key-provider,它可以注入並封裝邏輯+返回鍵。這與使用@Provides的guice相同嗎? – pandaadb
@pandaadb我不知道你是否指任何我不熟悉的技術_key-provider_術語,但我肯定會認爲這對模塊來說有點沉重。如果這是我的代碼審查,我當然會考慮將此提交給'提供者'頂級類,或隨機提供的按鍵POJO(這可能是你的意思)。 –
Cheers Jeff - 是的,我最終把這件事搬到了另一個班上(但是對我發現自己的情況很好奇,因爲它似乎反映了我對guice的理解上的差距。 ,我會標記爲已接受 –