我是否在以下示例中使用依赖注入:
@Scope("prototype")
@Component
public class Order{
@Autowired
public Order(User user,List<OrderItem> items,.......){
现在在别的地方:
@Component
public class PersistOrder{
@Autowired
Provider<Order> orderProvider;
public void prepareOrder() {
Order order = orderProvider.get();
正如 JSR-330 所述,Provider的 get() 方法返回一个新的 Order 实例,但是将哪些对象传递给新订单的构造函数?如您所见,订单有自己的依赖项,必须在将实际订单对象检索到方法之前注入这些依赖项。
如果没有 DI,我只需创建所有必要的参数并将它们传递给新订单的构造函数。那么我应该在这里使用 DI 吗?
编辑:
这就是没有 DI 的代码:
@Component
public class PersistOrder{
public void prepareOrder() {
User user=userDao.get(userId);
List<OrderItem> orderItems=orderItemDao.getAll(orderItemIds);
Order order = new SmartPhoneOrder(user,orderItems);
如您所见,我有用户和订单项目的 ID,并且可以从 DAO 获取它们的实例。然后我将这些实例传递给 Order 的子类的构造函数以获取实例。这个过程对我来说似乎很清楚。我的意思是如何使用 DI 完成这项工作,以便我的代码享受 PersistOrder 和 Order 类之间的解耦?或者在这个例子中使用 DI 会使逻辑更复杂?