@Autowired和@Resource 注解的区别与联系

74 阅读1分钟

@Autowired@Resource都是用于依赖注入的注解,但它们有几个不同点:

  1. 来源:

    • @Autowired是Spring Framework提供的注解,专门用于自动装配Bean。
    • @Resource是Java EE提供的注解,用于进行依赖注入,不仅限于Spring容器管理的Bean,也可以注入其他Java对象。
  2. 按类型还是按名称注入:

    • @Autowired是按类型(by type)进行注入的,它会根据类型自动装配Bean。
    • @Resource是按名称(by name)进行注入的,它会根据名称来查找并注入对应的Bean。
  3. 可选属性:

    • @Autowired注解是由Spring框架提供的,是非JDK自带的注解,因此在使用时需要导入相应的包。
    • @Resource注解是JDK自带的注解,无需额外导入包,在Java EE环境中可以直接使用。
  4. 灵活性:

    • @Autowired中,如果有多个Bean类型匹配时,可以结合@Qualifier注解使用,或者配合@Primary注解来指定首选的Bean。
    • @Resource中,通过指定name属性来注入指定名称的Bean,如果未指定name属性,则会按照默认规则进行注入。

总的来说,两者都可以用于依赖注入,但在具体使用时需要考虑到它们的不同特性和适用场景。