如何使用@AllArgsConstructor和final 代替 @Autowired
@AllArgsConstructor和final 代替 @Autowired

Springboot官方建議使用final來修飾成員變量,然后通過構(gòu)造方法來進(jìn)行注入原因:final修飾的成員變量是不能夠被修改的,反射那就沒辦法了。
spring代替 @Autowired(lombok相關(guān)注解)
前提:使用lombok
@Slf4j
@RestController
//生成一個(gè)包含過所有字段的構(gòu)造方法
//@AllArgsConstructor
//會將類的每一個(gè)final字段或者non-null字段生成一個(gè)構(gòu)造方法
@RequiredArgsConstructor
public class AdminUserController {
/* autowired沒什么問題,但是有可能報(bào)錯(cuò),iUserService為null,spring也不建議使用autowired */
//@Autowired
//private IUserService iUserService;
private final IUserService iUserService;
@PostMapping("/login")
public Result adminLogin(HttpServletResponse response, String username,String password) {
//....
}
}
注解
@NoArgsConstructor后會 生成無參的構(gòu)造方法@RequiredArgsConstructor會將類的每一個(gè)final字段或者non-null字段生成一個(gè)構(gòu)造方法@AllArgsConstructor生成一個(gè)包含過所有字段的構(gòu)造方法。
@AllArgsConstructor 和@RequiredArgsConstructor都可以用來替換@Autowired寫法,區(qū)別在@RequiredArgsConstructor必須要有final修飾。
遇到坑
使用@AllArgsConstructor后,@Value會失效,獲取不到值。使用@RequiredArgsConstructor則正常。今后注入service、mapper等都使用@RequiredArgsConstructor好了。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java+Selenium實(shí)現(xiàn)文件上傳下載功能詳解
這篇文章主要介紹了java代碼如何利用selenium操作瀏覽器上傳和下載文件功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2023-01-01
springboot 整合fluent mybatis的過程,看這篇夠了
這篇文章主要介紹了springboot 整合fluent mybatis的過程,配置數(shù)據(jù)庫連接創(chuàng)建數(shù)據(jù)庫的詳細(xì)代碼,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-08-08
java SpringBoot自定義注解,及自定義解析器實(shí)現(xiàn)對象自動(dòng)注入操作
這篇文章主要介紹了java SpringBoot自定義注解,及自定義解析器實(shí)現(xiàn)對象自動(dòng)注入操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08
Java實(shí)現(xiàn)將每日新聞添加到自己博客中
這篇文章主要為大家詳細(xì)介紹了Java如何實(shí)現(xiàn)將每日新聞添加到自己博客中并發(fā)送到微信群中,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-12-12
如何實(shí)現(xiàn)java Iterator迭代器功能
這篇文章主要介紹了如何實(shí)現(xiàn)java Iterator迭代器功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01

