在使用idea开发的时候经常遇到一个提示,使用Spring的依赖注入注解@Autowired后出现如下警告:
Field injection is not recommended (字段注入是不被推荐的)
但使用@Resouce注解却不会出现此提示,下面对其再次进行分析一下。
Spring常见的DI(依赖注入)方式:
Spring常见DI方式的特点:
@Autowired/@Resouce都是通过注解实现依赖注入,但@Autowired是Spring定义的,而@Resource是JSR-250定义的。其区别如下:
字段注入方式虽然有很多缺点,但好处也很明显,就是方便。使用构造器或者setter注入需要写更多业务无关的代码,十分麻烦。
那为什么IDEA只对@Autowired警告,却对@Resource视而不见呢?
@Autowired是Spring提供的,一旦换用了其他的IoC框架,是不能够支持注入**的。而 @Resource是JSR-250提供的,它是Java标准,可以兼容,也可以正常工作。