在使用 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,在启动依赖容器时遇到这个问题都是配置的依赖注入少了一个注解什么的,
然而这种方式就过于依赖注入容器了,当没有启动整个依赖容器时,这个类就不能运转,在反射时无法提供这个类需要的依赖