我可以将手动实例化与自动装配相结合吗?

时间:2013-02-27 21:19:32

标签: java spring binding code-injection autowired

确定。我不知道如何问这个问题,这是我必须遗漏的标志。我能做的最好的事情是:“有没有办法手动实例化对象并仍在该对象中使用注入?”

具体来说,我说:

class A {

   public A(MyObject1 obj1, MyObject2 obj2, ..., MyObjectn objn) {
     ...
   }

}

我想连接除MyObjectn之外的所有这些对象。据我所知,如果我在上面的构造函数前面使用@Autowired,那么我应该只在使用该类实例的代码中实例化该对象:

@Autowired
A a;

不允许我手动传递构造函数中的objn。有没有办法解决这个限制,而不是在使用该类实例的代码中手动初始化A?

2 个答案:

答案 0 :(得分:3)

简短回答 - 不。 您可以使用IoC,也可以手动实例化对象。

我想到了一个解决方法:

创建一个服务,每个MyObject1为@Autowired

在此服务中创建一个方法:

public A createA(MyObjectN objn) {
   return new A(object1, object2... objn); //note that object1 .. objectn-1 are autowired.
}

使用@Autowired;)注入服务并致电service.createA()

答案 1 :(得分:-1)

来自vmoksha的sunilkumar

我们不能像那样创建