2010-11-21 126 views
0

嗨 如果A类由spring实例化。在类A我实例化类B的另一个对象(使用new运算符定期intanti)我可以实例化类B的依赖关系,只是从检验类A?实例化弹簧中的依赖关系

class A{ 
    Xdao xDao; 
    B bvar = new B(); 
} 

Class B { 
    Ydao yDao; 
} 

有没有办法在实例化类A时直接注入依赖ob类B?

有这样的:(dependecy属性只是一个例子)提前

<bean id="classA" dependecy="classB"> 
    <property name="xDao" ref="xDao" /> 
</bean> 

<bean id="classB" > 
    <property name="yDao" ref="xDao" /> 
</bean> 

感谢。

我想避免把另一个属性(或构造函数)设置为B类 的嵌套调用,因为我不想更改现有的代码。

+0

请格式化你的Java代码代码(01010101按钮)。并添加一些linebreaks ;-) – 2010-11-21 17:36:49

回答

1

你应该让Spring处理所有的实例化和注入。这意味着你应该注入classBclassA

<bean id="classA"> 
    <property name="xDao" ref="xDao" /> 
    <property name="bvar" ref="classB" /> 
</bean> 

<bean id="classB"> 
    <property name="yDao" ref="xDao" /> 
</bean> 

而且,摆脱你的new B()的:

class A { 
    Xdao xDao; 
    B bvar; 
} 

class B { 
    Ydao yDao; 
} 
+0

谢谢Neeme。我只是看春季文件,我看到有依赖属性。我可以使用它吗?如上所述,我不想改变现有的不使用弹簧注入的代码,但使用新的操作符。韩国社交协会。 – bob 2010-11-21 17:47:27

+0

Spring有“依赖”属性,但它用于不同的目的。如果你想使用IoC容器(比如Spring),你必须放弃“手动”构建新对象的权利。所以我想你没有别的选择,只能改变现有的代码。或者在类加载时做一些疯狂的字节码操作,但这可以被认为是“黑魔法”。 – 2010-11-21 17:52:46

+0

Tks。这解决了我的问题。 – bob 2010-11-21 18:00:36

0

当你调用“new”时,该对象不在Spring的控制之下。

注入或呼叫“新” - 它是一个或另一个。