天天看点

Spring 中,@Autowired 和@Resource 的区别是什么?Spring 中,@Autowired 和@Resource 的区别是什么?

Spring 中,@Autowired 和@Resource 的区别是什么?

首先,@Resource 是 JSR-250 标准的注释,不属于 Spring 中的标准注解,而@Autowired 属于 Spring 中的注解。

@Autowired 与@Resource 都可以用来装配 bean. 都可以写在字段上, 或写在 setter 方法上。

不同在于:

@Autowired 默认按类型装配(byType),如果要按名称装配的话,必须和@Qualifier 注解一起使用。

@Autowired() 
@Qualifier("myBean")
private MyBean myBean;           

复制

@Resource,默认按名称进行装配(byName),通过 name 属性设置名称,如果没有设置 name 属性,则默认取字段名名称进行查找。如果还是找不到名称,则会按照类型进行装配。需要注意的是,如果 name 属性被设置了,那么必须是按照名称进行装配。

@Resource("myBean")
private MyBean myBean;           

复制