這是我第一次使用依賴注入,我有點困惑。簡單的依賴注入不工作
我真的不明白它是如何工作的。
我已經嘗試了一個簡單的例子:
public class StockResponse extends Response
{
@Inject BrandService $brand;
public List<StockResponseItem> stock;
public StockThresholdResponse()
{
stock = new ArrayList<>();
}
public static StockThresholdResponse create(List<DataItem> data)
{
StockResponse stock= new StockResponse();
for (ThresholdCheckAggregate data: d)
{
StockResponseItem item = new StockResponseItem();
item.id = d.thresholdId;
item.brand = str.$brand.byId(d.brand);
str.stockThresholds.add(item);
}
return str;
}
}
但是,當我用我的create()
方法,我得到$brand
一個空指針異常。
我想我誤解了DI的工作原理,但找不到我的錯誤。
您使用的是DI容器嗎?也許您應該使用構造函數注入來注入品牌依賴項,即在類構造函數a中添加BrandService參數,然後將其保存到$品牌字段 –
DI容器中?我正在使用這個遊戲,我認爲,爲我管理... 我已經嘗試過您的解決方案,但由於缺少參數而導致'new StockResponse()'語句失敗... –
您在哪裏創建StockReponse實例?您應該在[組合根目錄](http://blog.ploeh.dk/2011/07/28/CompositionRoot/)中創建它。你應該做一些新的StockReponse(新品牌服務())。這被稱爲[Pure DI](http://blog.ploeh.dk/2014/06/10/pure-di/)。我從未使用過播放框架,也不知道它是如何使用的。 –