spring.factories將被廢棄,你的spring-boot-starter-X還好嗎?

當spring boot 升級到2.7.0版本,其中有一項是變更是改變原來的自動化配置注入方式;

以前版本:

  • 自動化配置類需要在META/spring.factories文件中配置配置類
  • @Configuration

最新版本:

  • 自動化配置類是配置在META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中配置
  • @AutoConfiguration

目前兼容兩種配置模式共存.

@AutoConfiguration 介紹

@AutoConfiguration是被用在META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports中的自動化配置類上用來替註解,其中@Configuration對應的proxyBeanMethods屬性值一直爲false。

新老方式如何同時兼容?

  1. SpringFactoriesLoader用來加載spring.factories配置類
  2. ImportCandidates用來加載META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports配置文件;

AutoConfigrationExcludeFilter類兼容兩種方案的源碼:

	protected List<String> getAutoConfigurations() {
		if (this.autoConfigurations == null) {
			List<String> autoConfigurations = new ArrayList<>(
					SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class, this.beanClassLoader));
			ImportCandidates.load(AutoConfiguration.class, this.beanClassLoader).forEach(autoConfigurations::add);
			this.autoConfigurations = autoConfigurations;
		}
		return this.autoConfigurations;
	}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章