使用Spring
<bean id="id2" class="class2">
</bean>
<bean id="id1" class="class1">
<constructor-arg index="0" ref="id2" />
</bean>
如果使用getbean(“id1”),我发现不会自动创建id2。如何在创建id1之前强制创建id2?
答案 0 :(得分:5)
那应该有用。 Spring从布线中找出依赖关系,并按所需顺序创建事物。
如果没有,请检查类名是否正确,class1
和class2
是否具有适当的构造函数,以及可能阻止实例化两个bean的其他内容。另外,检查您是否未指定具有构造函数参数依赖性循环的内容; e.g。
<bean id="id2" class="class2">
<constructor-arg index="0" ref="id1" /> </bean>
<bean id="id1" class="class1">
<constructor-arg index="0" ref="id2" /> </bean>
如果这个答案没有帮助,请向我们提供完整的堆栈跟踪,以及REAL布线文件的相关摘录。
我对Spring 3.0 documentation的阅读是OP的示例中不应该1}}属性。 depends-on
应足以告诉Spring存在依赖关系,并使其以正确的顺序实例化bean。
答案 1 :(得分:3)
这可以通过以下方式明确指定bean“id1”依赖于“id2”来完成:
<bean id="id2" class="class2">
</bean>
<bean id="id1" class="class1" depends-on="id2">
<constructor-arg index="0" ref="id2" />
</bean>
答案 2 :(得分:1)
如果bean id2仅用作id1的构造函数arg,你也可以使用内部bean。
<bean id="id1" class="class1">
<constructor-arg>
<bean class="class2">
</bean>
</constructor-arg>
</bean>
(编辑错字)