spring如何控制对象创建的顺序?
Posted
技术标签:
【中文标题】spring如何控制对象创建的顺序?【英文标题】:how to control the sequence of object creation in spring? 【发布时间】:2017-03-12 01:31:41 【问题描述】:在基于 xml 的方法中,我们在 xml 中配置 bean 定义, bean 将按照我们定义 bean 的顺序创建。
1) <beans>
<bean id="a" class="com.abc.a"/>
`<bean id="b" class="com.abc.b"/>`
</beans>
在这里,a 会在 b 之前被创建。
2)<beans>
<bean id="a" class="com.abc.a">
<property name="c" ref="c"/>
</bean>
<bean id="b" class="com.abc.b/">
<bean id="c" class="com.abc.c/">
这里会先创建 c,然后是 a,然后是 b。
在注解驱动的情况下,如何控制对象创建的顺序?使用有序接口?
【问题讨论】:
你为什么在乎?请在代码块中将 XML 发布为 XML。 【参考方案1】:Spring 有一个 java config 的 Order
属性和一个用于 xml 配置的 order
属性来控制创建 bean 的顺序。 (较低的值意味着较早的创建,也允许负数)
另一种方式是控制顺序是DependsOn
注解/属性。
【讨论】:
【参考方案2】:Spring 容器首先在 xml 和注释方法中创建依赖对象(因为主要对象根据对象图需要它们)。
在注解驱动的情况下,如何控制对象创建的顺序?使用有序接口?
您无法控制对象的顺序,因为始终需要先创建依赖对象,然后再创建主对象。 订单接口用于不同的目的,即使用自动装配将对象推送到列表中。
您可以参考以下链接中的示例,以使用@Order 将对象设置/推送到列表中:
What is the use of @Order annotation in Spring?
【讨论】:
以上是关于spring如何控制对象创建的顺序?的主要内容,如果未能解决你的问题,请参考以下文章