一次由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)?,?dǎo)致報錯
所以將@AllArgsConstructor刪除就好了。
簡單記錄一下,希望能幫助到大家。如果有不對的地方還望各位大佬指正。在此感謝各位花時間觀看。
@AllArgsConstructor lombok注解踩坑記錄
這里記錄一下使用注意點
- @AllArgsConstructor 放在類上面,作用等同于一個全量的有參構(gòu)造;
- 但如果這個類有繼承其他類,其他類中的字段并不會出現(xiàn)在全量有參構(gòu)造中;
- 可能是我的版本太低或者其他問題,暫時沒找到為什么繼承類的參數(shù)沒有出現(xiàn)在構(gòu)造中。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java數(shù)據(jù)結(jié)構(gòu)關(guān)于棧的實例應(yīng)用
大家好,本篇文章主要講的是java數(shù)據(jù)結(jié)構(gòu)關(guān)于棧的實例應(yīng)用,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12Java StringBuilder和StringBuffer源碼分析
這篇文章主要針對Java中兩個常用的操作字符串的類 StringBuilder和StringBuffer進(jìn)行源碼分析,感興趣的小伙伴們可以參考一下2016-01-01Struts2實現(xiàn)對action請求對象的攔截操作方法
這篇文章主要介紹了Struts2實現(xiàn)對action請求對象的攔截操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-11-11