相同点
- 都是做bean的注入时使用
- 两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。
装配类型不同
@Autowired
注解是按照类型(byType)装配依赖对象,属于Spring- 依赖对象必须存在,如果要允许null值,可以设置它的required属性
required=false
- 也可以使用名称装配,配合
@Qualifier
注解
- 依赖对象必须存在,如果要允许null值,可以设置它的required属性
@Resource
默认按照名称(byName)自动注入,属于JDK- @Resource有两个重要的属性:name和type,而Spring将 @Resource 注解的name属性解析为bean的名字,而type属性则解析为bean的类型。
- 如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象
差别举例
有一个类,俩个实现类的情况注入bean
// @Autowired不知道注入哪一个实现类,通过@Qualifier("xxx"),xxx为实现类的类名小写
@Autowired
@Qualifier("userDao")
private UserDao userDao;
// @Resource有name属性,可以区分
@Resource(name = "userDao")
private UserDao userDao;