springboot~AutoConfigureAfter如何控制Bean的注入順序

张占岭發表於2024-04-30

這個文章主要介紹一下@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在初始化時,使用了正確的可預期的順序進行註冊

相關文章