Spring Boot3.x自動配置不生效的排查與解決方法(IDEA 文件夾命名導致的問題)
在使用Spring Boot搭建多模塊項目時,需要使用到自動配置功能,把一些通用功能封裝成模塊后通過META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
文件注冊配置類。然而,最近遇到一個奇怪的問題:
1.自動配置類怎么都不生效
最終排查發(fā)現(xiàn),問題竟然出在文件路徑上!這篇文章記錄一下問題的經過和解決方法。
一、問題描述
項目背景
1.使用版本:Spring Boot 3.x。
2.模塊設計:
- 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的相關信息。 - 即使加了調試代碼和日志,仍然沒有任何效果。
二、排查過程
1. 確認自動配置文件路徑和內容
首先檢查了 AutoConfiguration.imports 文件的位置和內容是否正確:
- 路徑:
src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports - 內容:確認類名拼寫無誤。
但是問題依然存在,懷疑是自動配置類根本沒有被 Spring Boot 加載。
2. 驗證自動配置類是否加載
在自動配置類 IdempotentAutoConfiguration 中添加靜態(tài)代碼塊或日志輸出,判斷是否加載:
@AutoConfiguration
public class IdempotentAutoConfiguration {
static {
System.out.println("IdempotentAutoConfiguration 加載成功!");
}
}重新啟動項目后,依然沒有看到任何輸出。說明自動配置類根本沒有被 Spring Boot 掃描到。
3. 檢查 META-INF 文件夾的實際路徑
仔細查看項目結構時,發(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 注解也正常生效,切面邏輯開始運行。
結論 TL;DR
切記,在resources中創(chuàng)建多級文件夾(new directory)的時候,用/進行分割父子文件夾,別用.來分割了

到此這篇關于Spring Boot3.x自動配置不生效的排查與解決:IDEA 文件夾命名導致的問題的文章就介紹到這了,更多相關Spring Boot自動配置不生效內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
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-08
elasticsearch數(shù)據(jù)信息索引操作action?support示例分析
這篇文章主要為大家介紹了elasticsearch數(shù)據(jù)信息索引操作action?support示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04

