@Resource
@Resource注解由JDK提供。
@Resource有两个常用的属性name和type。
a)同时指定name、type,那么会先通过name查找唯一的bean,找不到就抛异常;如果type与类型不一致,也会抛异常。
b)指定name:通过name查找唯一的bean,找不到就抛异常
c)指定type:通过type找唯一的bean,不唯一,那么抛NoUniqueBeanDefinitionException异常。
d)都不指定,那么会通过字段名作为key去查找,找到就赋值;找不到就通过字段类型去查找,不唯一,也会抛异常。
@Autowired
@Autowired由Spring提供,并且Spring也支持@Resource注解。
@Autowired只有一个属性required,默认值为true,找不到就抛异常,为false,那么找不到时就为null。
@Autowired也可以按照类型查找,如果查找出来的bean不唯一,那么也会抛异常,此时可以通过组合注解来解决,如:@Autowired @Qualifier("XXXDao")。