为什么Spring和IDEA都不推荐使用@Autowired注解呢?
下文笔者讲述Spring和IDEA不推荐使用@Autowired注解的简介说明,如下所示
Spring依赖注入注解@Autowired后会出现如下警告
Field injection is not recommended (字段注入是不被推荐的)
但是使用@Resource却不会出现此提示
Spring常见DI方式
构造器注入:使用构造方法的参数注入依赖
Setter注入:调用Setter的方法注入依赖
字段注入:在字段上使用@Autowired/Resource注解
@Autowired与@Resource
@Autowired是Spring定义的,
@Resource是JSR-250定义
大致功能相同
@Autowired与@Resource区别:
依赖识别方式:@Autowired默认是byType可以使用@Qualifier指定Name,
@Resource默认ByName如果找不到则ByType
适用对象:@Autowired可以对构造器、方法、参数、字段使用,
@Resource只能对方法、字段使用
提供方:
@Autowired是Spring提供
@Resource是JSR-250提供的
不推荐使用@Autowired注解的缘由
@Autowired是Spring提供
它是特定IoC提供的特定注解
导致应用与框架的强绑定
一旦换用了其他的IoC框架,是不能够支持注入**的。
@Resource是JSR-250提供
是Java标准
使用IoC容器应当去兼容它
这样即使更换容器
也可以正常工作
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


