@AutoWired和@Resource有什么区别

发布时间 2023-03-31 17:11:24作者: 积极向上的徐先生

@Autowired@Resource 都是用于进行依赖注入的注解,但是它们有以下几个区别:

  1. 来源不同:@Autowired 是Spring提供的注解,而 @Resource 是JavaEE提供的注解,不过Spring也支持使用 @Resource 进行依赖注入。

  2. 默认依赖查找方式不同:@Autowired 默认使用类型匹配的方式进行依赖查找和注入。而 @Resource 默认使用名称匹配的方式进行依赖查找和注入。

  3. 依赖注入的属性不同:@Autowired 可以用于构造器、属性和方法中,而 @Resource 只能用于属性和方法中。

  4. 支持的类型不同:@Autowired 支持按照类型注入任意类型的Bean,而 @Resource 只能注入实现了JavaEE规范的组件,如 DataSourceSessionContextEJB 等。

需要注意的是,使用 @Autowired@Resource 进行依赖注入时,都需要在Spring的配置文件中进行相应的配置,以便让Spring能够扫描到被注入的Bean。


你好,这是Bing。我可以帮你解答你的问题。根据网上的资料1 2 3 4,@AutoWired和@Resource都是用来实现依赖注入的注解,但是它们有一些区别,例如:

  • @AutoWired是Spring框架的注解,而@Resource是JSR-250规范的注解,因此@Resource更通用,不依赖于Spring。
  • @AutoWired默认按照类型匹配,如果有多个同类型的候选者,可以使用@Qualifier指定名称。而@Resource默认按照名称匹配,如果没有指定名称,就按照类型匹配。
  • @AutoWired可以用在构造器,setter方法,字段和参数上,而@Resource只能用在字段和setter方法上。

例如:

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

等价于

@Resource(name="myBean")
private MyBean myBean;

希望这些信息对你有帮助。如果你还有其他问题,请继续提问。