@Resource默认按照名称方式进行bean匹配,@Autowired默认按照类型方式进行bean匹配
@Resource(import javax.annotation.Resource;)是J2EE的注解,@Autowired( import org.springframework.beans.factory.annotation.Autowired;)是Spring的注解
Spring属于第三方的,J2EE是Java自己的东西。使用@Resource可以减少代码和Spring之间的耦合。
举例如下:现在有一个接口Human和两个实现类ManImpl、WomanImpl,在service层的一个bean中要引用了接口Human,这种情况处理如下:
@Resource注入
@Resource(name = "manImpl")
private Human human;
或者
@Resource(name = "womanImpl")
private Human human;
@Autowired注入
@Autowired
@Qualifier("manImpl")
private Human human;
或者
@Autowired
@Qualifier("womanImpl")
private Human human;
备注:如果实现类只有一个,则可以不用name属性指定例如
@Resource
private Human human;
或者
@Autowired
private Human human;