我有一个Web应用程序,我必须将它的组件(A,B,C)连接在一起而不是直接方法调用。
所以,我不知道如果在构造函数中需要其他实例,我如何将对象实例连接在一起。
我认为为什么我们可以在应用程序上下文中使用(bean ... constructor-args ...)。 但我不知道如果我想使用注释会怎样。
我举了一个简单的例子来说明具体的问题
class A
{
protected B b;
...
public func1(){
obj0 = makeObj0();
b = new B(obj0)
}
public Obj0 makeObj0() {...}
}
class B extends C
{
protected Obj0 obj0;
public B(Obj0 obj0){
super(obj0, "foo", new Obj1); //there is no another way to construct B, C
setObj0(obj0);
}
public void setObj0(obj){ obj0=obj;}
}
将A,B,(C)连接在一起(通过注释)的最佳方法是什么,因为B,C在构造函数中需要附加参数。
对于长篇解释感到抱歉,并提前感谢您的提示。
铯
答案 0 :(得分:1)
@Autowired
public B(..) {..}
将自动装配所有参数。如果您需要其他参数 - 那么不要使用构造函数注入。使用setter / field injection。提供一个空构造函数,并在您需要的每个字段上使用@Autowired
。
答案 1 :(得分:1)
嗯......如果你在启动B级时尝试使用@Resource。
class A
{
@Resource(name = "b")
protected B b;
...
public func1(){
obj0 = makeObj0();
b = new B(obj0)
}
public Obj0 makeObj0() {...}
}
然后,如果您需要在B或C中使用Autowire,我很难说。