一次由Lombok的@AllArgsConstructor注解引發(fā)的錯誤及解決
由Lombok的@AllArgsConstructor注解引發(fā)的錯誤
需求:在Service實現(xiàn)中寫了一個方法調(diào)用第三方接口同步數(shù)據(jù)。 功能代碼不做展示,比較普通的調(diào)用接口返回JSON數(shù)據(jù)。
直接看SpringBoot啟動的報錯信息:
Parameter 3 of constructor in org.springblade.modules.system.service.impl.UserServiceImpl required a bean of type 'java.lang.String' that could not be found.
在附一張圖:

看了許多文章都是在說調(diào)用了多余的@Autowired
也可以說就是這個原因,但是我在Controller類中去掉沒有任何的效果。發(fā)現(xiàn)在Controller層確實也都沒有用@Autowired注解。
這時候在Service實現(xiàn)類頂部發(fā)現(xiàn)了:@AllArgsConstructor
查了資料這里簡單解釋一下
全部參數(shù)的構(gòu)造函數(shù)的自動生成,該注解的作用域也是只有在實體類上,參數(shù)的順序與屬性定義的順序一致。
發(fā)現(xiàn)其他的類也是這么寫的沒啥問題。是因為我在這個類中加了@Value注解。將配置文件的屬性讀取出來。
按照上面注解的解釋
創(chuàng)造了一個全參的構(gòu)造器,將@Value修飾的變量作為構(gòu)造器入?yún)?,導致報錯
所以將@AllArgsConstructor刪除就好了。

簡單記錄一下,希望能幫助到大家。如果有不對的地方還望各位大佬指正。在此感謝各位花時間觀看。
@AllArgsConstructor lombok注解踩坑記錄
這里記錄一下使用注意點
- @AllArgsConstructor 放在類上面,作用等同于一個全量的有參構(gòu)造;
- 但如果這個類有繼承其他類,其他類中的字段并不會出現(xiàn)在全量有參構(gòu)造中;
- 可能是我的版本太低或者其他問題,暫時沒找到為什么繼承類的參數(shù)沒有出現(xiàn)在構(gòu)造中。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java 基礎之final、finally和finalize的區(qū)別
這篇文章主要介紹了java 基礎之final、finally和finalize的區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-05-05
SpringBoot整合Redis哨兵模式的實現(xiàn)示例
Redis哨兵模式是Redis高可用方案的一種實現(xiàn)方式,通過哨兵來自動實現(xiàn)故障轉(zhuǎn)移,從而保證高可用,本文主要介紹了SpringBoot整合Redis哨兵模式的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2024-02-02

