@Autowired 和 @Resource 都可以用于注入Bean对象,并且都可以自动装配依赖关系,但他们主要的区别在于:
1. 使用的注解不同
@Autowired 是Spring提供的注解,而 @Resource 是JSR-250规范提供的注解。
2. 默认情况下注入的方式不同
@Autowired 默认按照类型装配依赖对象,当发现有多个Bean满足依赖时,又会根据Bean的名称进行匹配;而 @Resource 则默认按照名称进行装配。
3.
@Autowired 可以对构造函数、Setter方法、成员变量进行注入,可以自动注入任何一个Spring容器中已经创建好的Bean对象;而@Resource 只能对成员变量进行注入,只能注入bean对象,不能注入简单类型和null值。
4.
@Autowired 注解没有指定 name 属性时,如果同一类型的 bean 有多个时,就会抛出异常;而@Resource 注解如果没有指定 name属性,则使用默认的 byName 注入方式,如果找不到对应的 bean,则会抛出异常。
在你给出的两个例子中,GuestInfoService 类使用了 @Resource 注解注入依赖的 GuestInfoDao 对象,而 CivilAction 类使用了 @Autowired 注解注入依赖的 ICivilService 对象。根据以上区别,如果你想使用默认按照名称装配依赖对象,可以使用 @Resource 注解;如果你想使用默认按照类型装配依赖对象,可以使用 @Autowired 注解。
标签:依赖,Resource,区别,Autowired,默认,注解,注入 From: https://blog.51cto.com/u_16200950/6928259