首页 / 科技百科 / 正文

spring bean加载顺序 

Spring Bean的加载顺序可以通过以下几种方式进行控制:

1. 使用@DependsOn注解:@DependsOn可以用来指定依赖哪个bean,让自己在该bean之后加载。例如,@Configuration@DependsOn({"initConfig", "aaa"})public class Bb{}表示在执行Bb.java之前,会首先执行InitConfig.java,然后再执行Aaa.java。

2. 参数注入:在@Bean标注的方法上,如果你传入了参数,springboot会自动会为这个参数在spring上下文里寻找这个类型的引用,并先初始化这个类的实例。例如,@Beanpublic BeanA beanA(BeanB demoB){}表示beanB先于beanA被初始化加载。

3. 利用bean的生命周期:从容器到Bean实例化&初始化都是有生命周期的,并且提供了很多的扩展点,允许你在这些步骤时进行逻辑的扩展。例如,可以在相应的扩展点加入自己的业务初始化代码,从来达到顺序的控制。

4. @AutoConfigureOrder注解:这个注解用来指定配置文件的加载顺序。例如,@Configuration@AutoConfigureOrder(2)public class BeanOrderConfiguration1{}表示bean1的加载顺序在bean2之前。

需要注意的是,springboot会按类型去寻找。如果这个类型有多个实例被注册到spring上下文,那你就需要加上@Qualifier("Bean的名称")来指定。

如有侵权请及时联系我们处理,转载请注明出处来自