這個文章主要介紹一下@AutoConfigureAfter在spring框架中的作用,在使用過程中,很多開發人員在使用它的時候都出現了問題,問題比較多的就是它們的註冊順序總不是我們預期的
,下面介紹一下正常的使用方法。
- @AutoConfigureAfter用在配置類上面,即需要在@Configuration修飾的類上,而不是@Component上面。
- 這些配置類,需要在spring.factories上面進行註冊
- @AutoConfigureAfter影響的是配置類中@Bean宣告的方法,而不是配置類本身
程式碼測試
祖父配置
@Configuration
@AutoConfigureBefore(Father.class) // 在我兒子Father之前,我GrandFather先初始化
public class GrandFather {
@Bean
public String grandFatherBean() {
System.out.println("配置類GrandFatherConfig構造器被執行...");
return null;
}
}
父親配置
@Configuration
public class Father {
@Bean
public String fatherTest() {
System.out.println("配置類FatherConfig構造器被執行");
return "配置類FatherConfig構造器被執行...";
}
}
兒子配置
@Configuration
@AutoConfigureAfter(Father.class) // 在爸爸之初始化
public class Son {
@Bean
public String SonBean() {
System.out.println("配置類SonConfig構造器被執行...");
return null;
}
}
spring.factories配置相關
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.lind.common.bean.family.Father,\
com.lind.common.bean.family.GrandFather,\
com.lind.common.bean.family.Son
springboot啟動後,可以看到截,這些bean在初始化時,使用了正確的可預期的順序進行註冊