国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Intellij IDEA如何去掉@Autowired 注入警告的方法

瀏覽:181日期:2024-09-01 08:52:04

問題

在Service層注入Mybatis的Mapper我們通常會使用@Autowired 自動注入

@Autowiredprivate ProductMapper productMapper;

但是這樣Intellij IDEA會顯示紅色告警,提示不能自動注入。

Intellij IDEA如何去掉@Autowired 注入警告的方法

當我們在Controller層注入Service時我們也經常直接在Filed上使用@Autowired 注解,這時候不顯示紅色警告,但是也顯示Field injection is not recommended 的建議

Intellij IDEA如何去掉@Autowired 注入警告的方法

原因

第一種情況是因為IDEA可以識別并理解Spring的上下文。然而Mapper接口是Mybatis的,IDEA理解不了。所以會出現紅色告警。

而第二種原因是因為官方不推薦使用Filed進行注解,而推薦使用構造器或Setter方法進行注解,像下面兩種寫法就不會出現警告。

private final ProductService productService;@Autowiredpublic ProductController(ProductService productService) {this.productService = productService;}

or

private ProductService productService;@Autowiredpublic void setProductService(ProductService productService) {this.productService = productService;}

問題是什么

Field注入看起來非常好,夠簡潔,代碼通俗易懂。你的類可以專注于業務而不被依賴注入所污染。你只需要把@Autowired扔到變量之上就好了,不需要特殊的構造器或者set方法,依賴注入容器會提供你所需的依賴。但是Field注入會帶來2個問題:

當注入的對象依賴其他對象,而被依賴的對象沒被創建的話就會出現空指針異常。 這樣的類沒辦法在容器之外被重用,也不能期望反射提供其所需的依賴。

詳細原因大家可以去這篇文章查看:http://olivergierke.de/2013/11/why-field-injection-is-evil/

構造器注入 VS Setter注入

Setter應該被用來注入可變的依賴。當沒有提供依賴時,這個類也應該能夠運轉。當實例化對象后,這些依賴也能隨時改變。其實也視情況而變,有時,一個不變的對象是理想狀態。有時,最好是能在運行期間改變對象的屬性。

構造器注入對象需要依賴的對象初始化后才能正常運轉,通過構造器提供這些依賴就能保證對象初始化后就能被使用。使用構造器注入的一個可能的影響就是循環依賴。

怎么解決

我們可以使用Lombok提供的注解 @RequiredArgsConstructor 來解決這兩個問題(Lombok這個大家項目都會使用吧)

@Service@Log4j2@RequiredArgsConstructor(onConstructor = @__(@Autowired))public class ProductServiceImpl implements ProductService { private final ProductMapper productMapper;...}

這里必須使用final修飾符來修飾注入的Service或Mapper首先我們看看編譯后的類是什么樣

Intellij IDEA如何去掉@Autowired 注入警告的方法

編譯完成后變成了使用構造器進行注入

認識@RequiredArgsConstructor

Lombok官方給出的解釋是: Generates constructor that takes one argument per final / non-null field. 所以它會為final和nonnull的屬性作為參數產生一個構造函數。

而上面我們講了Spring推薦使用Setter或構造器注入,那么@RequiredArgsConstructor剛好可以完成這件事,而且還簡化了你的代碼,何樂而不為是不是?

到此這篇關于Intellij IDEA如何去掉@Autowired 注入警告的方法的文章就介紹到這了,更多相關IDEA去掉@Autowired 注入警告內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: IDEA
相關文章:
主站蜘蛛池模板: 一级在线视频 | 久久免费高清视频 | 国产福利一区二区在线精品 | 欧美一级在线观看播放 | 男人的天堂免费视频 | 二区三区在线观看 | 碰碰碰免费公开在线视频 | 成人污网站 | 日本韩国欧美一区 | 久久成人性色生活片 | 国产成人高清亚洲一区91 | 二区在线观看 | 在线观看久草 | 成人五级毛片免费播放 | 欧美视频一区二区专区 | 久久久久久91香蕉国产 | 特级av毛片免费观看 | 国产亚洲精品午夜一区 | 美女三级在线 | 男女很舒服爽视频免费 | 国产精品久久久久a影院 | 久久久久9999 | 国产精品毛片无码 | 亚洲视频在线播放 | 欧美国产日韩在线 | 亚洲欧美一区二区视频 | 92看片淫黄大片一级 | 国产成人午夜福在线观看 | 亚洲视频免费在线 | 乱子伦农村xxxx视频 | 中文字幕在线视频在线看 | 日本特黄特色免费大片 | 最新理论三级中文在线观看 | 久久成人免费播放网站 | 亚洲男人的天堂久久香蕉网 | 亚洲欧美日本在线观看 | 国产美女一区精品福利视频 | 国产日产欧美a级毛片 | 久久亚洲一级毛片 | 精品成人免费视频 | 亚洲第一区香蕉_国产a |