如何在Spring中设置bean的构造顺序?

时间:2016-11-01 18:40:35

标签: java spring

我正在开发一个基于Spring的应用程序,我有一个要求,我希望在任何其他bean之前构造一个特定的bean。

如何指定在Spring中构造bean的顺序?

为了澄清,我希望在其他bean的构造函数之前执行特定bean的构造函数+ post构造。

2 个答案:

答案 0 :(得分:4)

您正在寻找depends-on。指定的任何bean都保证在带有注释的bean之前由容器创建。

@Bean
@DependsOn({"firstBean", "secondBean"})
class MyBean {}

您还可以在xml上指定:

<bean id="myBean" class="MyBean" depends-on="firstBean, secondBean">
</bean>

答案 1 :(得分:1)

在方法上利用@PostConstruct注释可能会有所帮助(如果您控制bean本身的代码)。

  • 在构造函数中进行bean不可知的初始化
  • 让春天把所有东西连在一起
  • 然后在标有@PostContstruct
  • 的方法中设置所有依赖bean的设置

这样,你不应该(至少我没见过它)需要任何bean初始化的顺序。一切都将被创建,注入,然后在Spring友好的生命周期中开始。

仅供参考,如果需要,还可以@PreDestroy进行清理。

这里的简单示例:https://www.mkyong.com/spring/spring-postconstruct-and-predestroy-example/