SpringBoot中Lombok注解失效的解決方案
背景
所用 Spring Boot 版本為 4.0.3,在創(chuàng)建項目時,勾選了 Lombok 依賴。
在代碼中給 User 實體類添加了 @Data 注解,user 對象調(diào)用自帶的 getName() 方法。當(dāng)項目啟動時,報如下錯誤:
java: 找不到符號 符號: 方法 getName() 位置: 類型為 com.sun3285.pojo.User 的變量 user
檢查 pom.xml 文件,發(fā)現(xiàn)確實已經(jīng)引入了 Lombok 依賴:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
開始懷疑 Lombok 依賴是否未生效,主要是兩個方向:
- 本地問題,Lombok 依賴可能由于哪里配置不對,導(dǎo)致未生效;
- 兼容性問題,因為 Spring Boot 版本為 4.0.3,版本較高,懷疑 Lombok 依賴版本與 Spring Boot 版本不兼容,導(dǎo)致 Lombok 未生效。
以下是排查問題的整個過程:
排查方向一
將 Lombok 依賴配置可能出問題的地方都檢查一遍:
實體類 User 是否加了 @Data 注解? 是!

IDEA 是否安裝了 Lombok 插件,并且插件是否啟用? 是!

是否開啟注解處理? 是!

在 IDEA 中打開實體類 User,通過 Ctrl + 鼠標(biāo)左鍵 點擊 @Data 注解,看是否能跳轉(zhuǎn)到 Lombok 的源碼? 是!

確保以上沒問題后,清除 IDEA 緩存,刪除項目目錄下的 target 文件夾,重啟 IDEA,重新啟動項目,發(fā)現(xiàn)問題仍未解決。
于是開始排查方向二。
排查方向二
首先,手動在實體類 User 中,臨時手動重寫 getName()、toString() 等方法,啟動項目,一切順利,無問題。
于是,懷疑 Lombok 依賴版本與 Spring Boot 版本不兼容,導(dǎo)致 Lombok 未生效。
接著,將 Spring Boot 版本降低為 3.3.5,其他保持不變,經(jīng)驗證,問題仍未解決。說明該問題與 Spring Boot 版本無關(guān)。
下一步,搜索網(wǎng)上的資料,嘗試了一些方法,如:
- 修改
pom.xml文件中的 Lombok 依賴:去掉<optional>標(biāo)簽,并手動指定 Lombok 依賴的版本; - 修改
pom.xml文件中的插件 plugin 配置:去掉<build>部分的第一個插件maven-compiler-plugin。
經(jīng)驗證,問題仍未解決。
最后,項目中就真的不能用 Lombok 依賴,只能手動為實體類寫 getter 和 setter 方法了嗎?
No!
接下來,介紹偶然發(fā)現(xiàn)的 Lombok 注解失效的解決方案。
解決方案
將 pom.xml 文件中,所有的插件 plugin 都注釋掉,即以下部分。

清除 IDEA 緩存,刪除項目目錄下的 target 文件夾,重啟 IDEA,重新啟動項目,一切順利,問題解決!
神奇的地方來了,下一步,將 pom.xml 文件中,上述所有的插件 plugin 都重新取消注釋,即恢復(fù)原狀。
清除 IDEA 緩存,刪除項目目錄下的 target 文件夾,重啟 IDEA,重新啟動項目,一切順利,問題未復(fù)現(xiàn)!
進一步驗證:
在項目編譯后,在 target/classes/xxx/pojo/ 目錄下找到實體類 User.class,打開,可以看到有自動生成的各種方法。

到此這篇關(guān)于SpringBoot中Lombok注解失效的解決方案的文章就介紹到這了,更多相關(guān)SpringBoot Lombok注解失效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis使用標(biāo)簽動態(tài)操作數(shù)據(jù)庫詳解
這篇文章主要介紹了MyBatis中使用標(biāo)簽動態(tài)操作數(shù)據(jù)庫的方法,動態(tài)SQL是指在運行PL/SQL塊時動態(tài)輸入SQL語句,是Mybatis的強大特性之?,能夠完成不同條件下不同的sql拼接,需要的朋友可以參考下2024-05-05
SpringMVC對自定義controller入?yún)㈩A(yù)處理方式
這篇文章主要介紹了SpringMVC對自定義controller入?yún)㈩A(yù)處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
Spring cloud Gateway簡介及相關(guān)配置方法
這篇文章主要介紹了Spring cloud Gateway簡介及相關(guān)配置方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04
解決idea使用過程中讓你覺得不爽的一些問題(小結(jié))
這篇文章主要介紹了解決idea使用過程中讓你覺得不爽的一些問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Spring中基于Java的配置@Configuration和@Bean用法詳解
這篇文章主要介紹了Spring中基于Java的配置@Configuration和@Bean用法詳解,Spring中為了減少xml中配置,可以聲明一個配置類(例如SpringConfig)來對bean進行配置。,需要的朋友可以參考下2019-06-06

