@Autowired 与 @Resource的区别和使用

@Resource

(1)   默认按照byName方式装配,属于ee自带注解,没有指定name时,name默认是变量名;

(2)   如果name一致,根据type区分,如果还一样报错;

@Autowired

(1)   默认按byType方式装配,spring注解,默认不允许为null,需要为null时,将required设置成false;

(2)    当一个接口存在多个实现类时,想要不报错,有一下几种方式:

A、在实现类上加上@Primary注解,表示优先注入该实现类;

B、使用@Qualifier指定注入的实例;

C、 当Autowired按byType查出多个时,会按byName来匹配;name表示变量名成;

两者加载的时候,如果无法注入唯一对象,就抛出异常;

具体可以查看下图:


你可能感兴趣的:(@Autowired 与 @Resource的区别和使用)