在使用 spring 框架中的依賴注入注解@Autowired時,idea報了一個警告 Field injection is not recommended
1,意思,字段的方式注入是不被推薦的
2,在了解具體原因之前,我們應該先明確 Spring 框架下的三種注入方式
1,字段注入,最簡單明了,也是被警告的方式
@Autowired
TestMapper testMapper;
2,構造器注入
final
TestMapper testMapper;
@Autowired
public UserServiceImpl(TestMapper testMapper) {
this.testMapper = testMapper;
}
3,SET 方法注入
private TestMapper testMapper;
@Autowired
public void setTestMapper (TestMapper testMapper) {
this.testMapper = testMapper;
}
3,原因,優缺點分析
1,優點
變量方式注入非常簡潔,沒有任何多余代碼,非常有效的提高了java的簡潔性。即使再多幾個依賴一樣能解決掉這個問題
2,缺點
不能有效的指明依賴。相信很多人都遇見過一個bug,依賴注入的對象為null,在啟動依賴容器時遇到這個問題都是配置的依賴注入少了一個注解什么的,
然而這種方式就過於依賴注入容器了,當沒有啟動整個依賴容器時,這個類就不能運轉,在反射時無法提供這個類需要的依賴