前言
最近 macos 上的 Edge 瀏覽器流出,趁着換瀏覽器把一些收藏的書簽整理一下.
緣由
我比較關注 IDEA 的提示,尤其是右側的出現黃線的警告,當我使用 @Autowired 進行依賴注入時,IDEA 會出現下面的警告:
Field injection is not recommended
后來查了一下原因,正好整理出來,首先看一下有哪些依賴注入的方式
依賴注入方式
- 構造函數注入 ,這也是比較推薦的方式
- Setter或者其他方法注入
- 字段注入
這三種其實都可以使用 @Autowired 注解,只是注解修飾的是構造函數,方法,還是字段.
字段注入的缺點
- 只需要使用 @Autowired 就很容易的進行依賴注入,為什么說這是個缺點呢,因為這種方便可能讓你放棄對依賴的思考,結果就是你的類的依賴可能是十幾個或者更多,這樣違反了SPR.
- 對單元測試不友好,你沒辦法直接初始化這個類,必須依賴 DI 容器.
- 類的依賴被隱藏起來,並不能像構造函數那樣在初始化時,就直觀的知道這個類有哪些依賴.
- 你的類跟DI容器強耦合在一起.