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;
复制