Spring Boot3.x自動配置不生效的排查與解決方法(IDEA 文件夾命名導致的問題)
在使用Spring Boot
搭建多模塊項目時,需要使用到自動配置功能,把一些通用功能封裝成模塊后通過META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
文件注冊配置類。然而,最近遇到一個奇怪的問題:
1.自動配置類怎么都不生效
最終排查發(fā)現(xiàn),問題竟然出在文件路徑上!這篇文章記錄一下問題的經(jīng)過和解決方法。
一、問題描述
項目背景
1.使用版本:Spring Boot 3.x。
2.模塊設(shè)計:
- framework 模塊:實現(xiàn)了一個冪等注解
@Idempotent
,通過切面類IdempotentAspect
攔截方法,并用IdempotentAutoConfiguration
注入。 - 測試模塊:引入
framework
模塊,測試冪等注解是否生效。
3.配置方式:
- 在
framework
模塊的src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
文件中注冊自動配置類:
cn.com.h8k.onecoupon.framework.config.IdempotentAutoConfiguration
問題現(xiàn)象
測試時發(fā)現(xiàn):
@Idempotent
注解沒有觸發(fā)切面邏輯。- 日志里沒有加載
IdempotentAutoConfiguration
的相關(guān)信息。 - 即使加了調(diào)試代碼和日志,仍然沒有任何效果。
二、排查過程
1. 確認自動配置文件路徑和內(nèi)容
首先檢查了 AutoConfiguration.imports
文件的位置和內(nèi)容是否正確:
- 路徑:
src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
- 內(nèi)容:確認類名拼寫無誤。
但是問題依然存在,懷疑是自動配置類根本沒有被 Spring Boot 加載。
2. 驗證自動配置類是否加載
在自動配置類 IdempotentAutoConfiguration
中添加靜態(tài)代碼塊或日志輸出,判斷是否加載:
@AutoConfiguration public class IdempotentAutoConfiguration { static { System.out.println("IdempotentAutoConfiguration 加載成功!"); } }
重新啟動項目后,依然沒有看到任何輸出。說明自動配置類根本沒有被 Spring Boot 掃描到。
3. 檢查 META-INF 文件夾的實際路徑
仔細查看項目結(jié)構(gòu)時,發(fā)現(xiàn) META-INF/spring
文件夾顯示為 META-INF.spring
,這引起了注意。
原因分析:
在 IntelliJ IDEA
中,新建文件夾 META-INF/spring
后,IDEA 默認顯示為 META-INF.spring
。如果直接在這個路徑下創(chuàng)建文件,實際路徑就會變成錯誤的 META-INF.spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
。
最終確認:文件路徑寫錯了,Spring Boot 無法找到自動配置文件。
4. 修正路徑并驗證
將文件移動到正確路徑 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
后,重新啟動項目,問題解決!
日志中成功顯示:
Positive matches: ----------------- IdempotentAutoConfiguration
測試時,@Idempotent
注解也正常生效,切面邏輯開始運行。
結(jié)論 TL;DR
切記,在resources
中創(chuàng)建多級文件夾(new directory
)的時候,用/
進行分割父子文件夾,別用.
來分割了
到此這篇關(guān)于Spring Boot3.x自動配置不生效的排查與解決:IDEA 文件夾命名導致的問題的文章就介紹到這了,更多相關(guān)Spring Boot自動配置不生效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis集成Spring的實例代碼_動力節(jié)點Java 學院整理
這篇文章主要介紹了Mybatis集成Spring的實例代碼,需要的朋友可以參考下2017-09-09簡單注解實現(xiàn)集群同步鎖(spring+redis+注解)
本文主要介紹了簡單注解實現(xiàn)集群同步鎖的步驟與方法。具有一定的參考價值,下面跟著小編一起來看下吧2017-01-01解決Javaweb 提交表單到servlet時出現(xiàn)空白頁面,但網(wǎng)站不報錯問題
這篇文章主要介紹了解決Javaweb 提交表單到servlet時出現(xiàn)空白頁面,但網(wǎng)站不報錯的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08elasticsearch數(shù)據(jù)信息索引操作action?support示例分析
這篇文章主要為大家介紹了elasticsearch數(shù)據(jù)信息索引操作action?support示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04Java數(shù)據(jù)結(jié)構(gòu)之圖的路徑查找算法詳解
這篇文章主要為大家詳細介紹了java數(shù)據(jù)結(jié)構(gòu)中圖的路徑查找算法,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-11-11