2011-09-19 59 views
1

我有一个Web应用程序,我必须将它的组件(A,B,C)连接在一起,而不是直接方法调用。如何通过Spring注释将它们连接在一起

所以,我不知道如何在构造函数中需要额外的实例时将对象实例连接在一起。

我想这就是为什么我们可以在应用程序上下文中使用(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需要就在additinal论证其构造函数。

对不起,对于简单的解释,并提前感谢提示。

回答

1
@Autowired 
public B(..) {..} 

将自动装配的所有参数。如果你需要额外的参数 - 那么不要使用构造函数注入。使用setter/field注入。提供一个空的构造函数,并在您需要的每个字段上有@Autowired

+0

谢谢,给我时间去尝试一下。 我感谢你的帮助。 – cscsaba

+0

还有一件事,有没有什么工具可以帮助我跟踪Spring在DI视图背景中所做的工作? (除了Spring IDE) – cscsaba

1

嗯..如果您在启动B级时尝试使用@Resource。

class A 
{ 
    @Resource(name = "b") 
    protected B b; 
    ... 
    public func1(){ 
    obj0 = makeObj0(); 
    b = new B(obj0) 
    } 

    public Obj0 makeObj0() {...}   
} 

然后,如果你需要在B或C自动装配,我很难说。

+0

谢谢,给我时间去尝试一下。 我感谢你的帮助。 – cscsaba

相关问题