注解 @Autowired 和 @Resource 有什么区别
- Resource 是 JDK 提供的,而 Autowired 是 Spring 提供的
- Resource 不允许找不到 bean 的情况,而 Autowired 允许(@Autowired(required = false))
- 指定 name 的方式不一样,@Resource(name"baseDao"),@Autowired()@Qualifier("baseDao") Resource 默认通过 name 查找,而 Autowired 默认通过 type 查找
- @Autowired 与@Resource 都可以用来装配 bean,都可以写在字段或 setter 方法上 61
- @Autowired 默认按类型装配,默认情况下必须要求依赖对象存在,如果要允许 null 值,可以设置它的 required 属性为 false。如果想使用名称装配可以结合@Qualifier 注解进 行使用。
- @Resource,默认按照名称进行装配,名称可以通过 name 属性进行指定,如果没有 指定 name 属性,当注解写在字段上时,默认取字段名进行名称查找。如果注解写在 setter 方法上默认取属性名进行装配。当找不到与名称匹配的 bean 时才按照类型进行装配。但是需 要注意的是,如果 name 属性一旦指定,就只会按照名称进行装配。