升級springboot3之自動配置導(dǎo)入失效問題及解決
升級springboot3之自動配置導(dǎo)入失效
解決辦法 (主動掃描加載META-INF/spring.factories下的自動配置類)
①.創(chuàng)建一個類實現(xiàn)DeferredImportSelector和BeanClassLoaderAware類
public class EnableAutoConfigurationImportSelector implements DeferredImportSelector, BeanClassLoaderAware {
private ClassLoader classLoader;
@Override
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
List<String> configurations = SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class, classLoader);
if (configurations.size() != 0){
return StringUtils.toStringArray(configurations);
}
return new String[0];
}
@Override
public void setBeanClassLoader(ClassLoader classLoader) {
this.classLoader = classLoader;
}② 在啟動類加上import注解
@EnableDiscoveryClient
@SpringBootApplication
//導(dǎo)入剛剛創(chuàng)建的類
@Import(value = EnableAutoConfigurationImportSelector.class)
public class Java17DemoApplication {
public static void main(String[] args) {
SpringApplication.run(Java17DemoApplication.class, args);
}
}導(dǎo)致問題的原因
spring2 和 spring3的spi掃描路徑不一致
- springboot2掃描的是META-INF/spring.factories文件
- springboot3掃描的是META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.import

這是springboot2的掃描路徑

這是升級到了springboot3時 掃描的文件路徑
所以 升級到springboot3時 因為沒有META-INF/spring.factories了 所以這個文件下的自動配置類就沒有加載到ioc容器中
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java 讀寫Parquet格式的數(shù)據(jù)的示例代碼
本篇文章主要介紹了java 讀寫Parquet格式的數(shù)據(jù)的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09
使用java基礎(chǔ)類實現(xiàn)zip壓縮和zip解壓工具類分享
使用java基礎(chǔ)類寫的一個簡單的zip壓縮解壓工具類,實現(xiàn)了指定目錄壓縮到和該目錄同名的zip文件和將zip文件解壓到指定的目錄的功能2014-03-03
解決mybatis一對多查詢resultMap只返回了一條記錄問題
小編接到領(lǐng)導(dǎo)一個任務(wù)需求,需要用到使用resultMap相關(guān)知識,在這小編記錄下這個問題的解決方法,對mybatis一對多查詢resultMap項目知識感興趣的朋友一起看看吧2021-11-11
springboot + elasticsearch 實現(xiàn)聚合查詢的詳細(xì)代碼
文章介紹了如何在Spring Boot 2.2.6中使用Elasticsearch進(jìn)行聚合查詢,重點在于通過API創(chuàng)建索引和映射,而不是使用Spring Data Elasticsearch的自動創(chuàng)建功能,文章還提到在創(chuàng)建映射時,Elasticsearch會自動為keyword類型添加keyword屬性,感興趣的朋友一起看看吧2025-02-02
Spring?Cloud?Gateway編碼實現(xiàn)任意地址跳轉(zhuǎn)
這篇文章主要介紹了Spring?Cloud?Gateway編碼實現(xiàn)任意地址跳轉(zhuǎn)的相關(guān)資料,需要的朋友可以參考下2023-06-06
SpringBoot詳解shiro過濾器與權(quán)限控制
當(dāng)shiro被運用到web項目時,shiro會自動創(chuàng)建一些默認(rèn)的過濾器對客戶端請求進(jìn)行過濾。比如身份驗證、授權(quán)的相關(guān)的,這篇文章主要介紹了shiro過濾器與權(quán)限控制2022-07-07
Ehcache簡介_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了Ehcache簡介,使用Spring的AOP進(jìn)行整合,可以靈活的對方法的返回結(jié)果對象進(jìn)行緩存2017-07-07

