升級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)文章
SpringMVC @ResponseBody 415錯誤處理方式
這篇文章主要介紹了SpringMVC @ResponseBody 415錯誤處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
Java?循環(huán)隊列/環(huán)形隊列的實現(xiàn)流程
循環(huán)隊列又叫環(huán)形隊列,是一種特殊的隊列。循環(huán)隊列解決了隊列出隊時需要將所有數(shù)據(jù)前移一位的問題。本文將帶大家詳細(xì)了解循環(huán)隊列如何實現(xiàn),需要的朋友可以參考一下2022-02-02
Java實現(xiàn)讀取html文本內(nèi)容并按照格式導(dǎo)出到excel中
這篇文章主要為大家詳細(xì)介紹了如何使用Java實現(xiàn)讀取html文本提取相應(yīng)內(nèi)容按照格式導(dǎo)出到excel中,文中的示例代碼講解詳細(xì),需要的可以參考下2024-02-02
springboot aspect通過@annotation進(jìn)行攔截的實例代碼詳解
這篇文章主要介紹了springboot aspect通過@annotation進(jìn)行攔截的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08

