如何控制 Spring 中 bean init-method 调用的顺序?

Posted

技术标签:

【中文标题】如何控制 Spring 中 bean init-method 调用的顺序?【英文标题】:How to control order of bean init-method invocation in Spring? 【发布时间】:2012-03-11 20:18:34 【问题描述】:

假设我有 bean,应该在另一个 bean 的 init-method 之后调用哪个 init-method 或构造函数。可能吗?

【问题讨论】:

【参考方案1】:

如果您使用 xml 配置,请使用 @DependsOn 注释或依赖属性。

【讨论】:

spring 是否也支持javax.ejb.DependsOn 注释?对应spring注解的文档可以在docs.spring.io/spring/docs/current/javadoc-api/org/…找到【参考方案2】:

您可以在第二个 bean 上使用 de depends-on 属性。

参考:http://static.springsource.org/spring/docs/1.2.x/reference/beans.html#beans-factory-dependson

【讨论】:

【参考方案3】:

在 Spring 上下文 XML 文件中使用 depends-on 属性:

<bean id="beanOne" class="ExampleBean" depends-on="manager">
  <property name="manager"><ref local="manager"/></property>
</bean>

@DependsOn 如果您使用注解,则在 bean 上注解。

【讨论】:

@fasttooth,好问题。我不知道确切的答案。它可能有效,因为据我所知,spring 在接线后调用所有后构造方法,所以它可能使用与接线相同的顺序。但我不确定。

以上是关于如何控制 Spring 中 bean init-method 调用的顺序?的主要内容,如果未能解决你的问题,请参考以下文章

spring如何控制对象创建的顺序?

如果你还不知道如何控制springboot中bean的加载顺序,那你一定要看此篇

Spring JSF 集成:如何在 JSF 托管 bean 中注入 Spring 组件/服务?

spring如何开启允许循环依赖

spring创建Bean对象的控制

关于springMVC中bean无法注入的问题