这是我第一次使用依赖注入,我有点困惑。简单的依赖注入不工作
我真的不明白它是如何工作的。
我已经尝试了一个简单的例子:
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/)。我从未使用过播放框架,也不知道它是如何使用的。 –