如何使用@AllArgsConstructor和final 代替 @Autowired
@AllArgsConstructor和final 代替 @Autowired
Springboot官方建議使用final來修飾成員變量,然后通過構造方法來進行注入原因:final修飾的成員變量是不能夠被修改的,反射那就沒辦法了。
spring代替 @Autowired(lombok相關注解)
前提:使用lombok
@Slf4j @RestController //生成一個包含過所有字段的構造方法 //@AllArgsConstructor //會將類的每一個final字段或者non-null字段生成一個構造方法 @RequiredArgsConstructor public class AdminUserController { /* autowired沒什么問題,但是有可能報錯,iUserService為null,spring也不建議使用autowired */ //@Autowired //private IUserService iUserService; private final IUserService iUserService; @PostMapping("/login") public Result adminLogin(HttpServletResponse response, String username,String password) { //.... } }
注解
@NoArgsConstructor
后會 生成無參的構造方法@RequiredArgsConstructor
會將類的每一個final字段或者non-null字段生成一個構造方法@AllArgsConstructor
生成一個包含過所有字段的構造方法。
@AllArgsConstructor 和@RequiredArgsConstructor都可以用來替換@Autowired寫法,區(qū)別在@RequiredArgsConstructor必須要有final修飾。
遇到坑
使用@AllArgsConstructor后,@Value會失效,獲取不到值。使用@RequiredArgsConstructor則正常。今后注入service、mapper等都使用@RequiredArgsConstructor好了。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java如何向指定文件操作一段內容(增加,刪除均可使用本方法)
這篇文章主要介紹了Java如何向指定文件操作一段內容(增加,刪除均可使用本方法),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12為Java應用創(chuàng)建Docker鏡像的3種方式總結
Docker的使用可以將應用程序做成鏡像,這樣可以將鏡像發(fā)布到私有或者公有倉庫中,在其他主機上也可以pull鏡像,并且運行容器,運行程,下面這篇文章主要給大家總結介紹了關于為Java應用創(chuàng)建Docker鏡像的3種方式,需要的朋友可以參考下2023-06-06SpringBoot實現(xiàn)接口的各種參數(shù)校驗的示例
本文主要介紹了SpringBoot實現(xiàn)接口的各種參數(shù)校驗的示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01SpringBoot校園綜合管理系統(tǒng)實現(xiàn)流程分步講解
這篇文章主要介紹了SpringBoot+Vue實現(xiàn)校園綜合管理系統(tǒng)流程分步講解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-09-09