bean定义中的constructor-arg和property

ant*_*hos 8 java spring properties javabeans

<bean id="cObject" scope="request" class="x.y.z.CClass"/>
<bean id="bObject" scope="request" class="x.y.z.BClass"/>
<bean id="aObject" scope="request" class="x.y.z.AClass">
    <constructor-arg ref="bObject" />
    <property name="cRef" ref="cObject" />
</bean>
Run Code Online (Sandbox Code Playgroud)

由于某种原因,aObject.cRef没有被设置.请注意,constructor-arg和property在同一个定义中使用.我没有看到具有类似功能的示例/帖子.

Sea*_*oyd 3

混合<constructor-arg>通常<property>是一个坏主意。

使用 的只有一个充分理由<constructor-arg>,那就是创建不可变对象。

但是,如果您可以设置对象的属性,那么您的对象就不是不可变的。不要使用<constructor-arg>. 重新设计类,@PostConstruct如果需要在 bean 创建时应用一些逻辑,请使用带注释的初始化方法。