@Autowired跟@Resource的关系和区别

Spring自动装配中,我们可能会使用到两个注解@Autowired跟@Resource
这两个注解都可以帮我们完成Bean之间的自动装配,那它们之间有什么不一样呢?

@Autowired

  • 是Spring自己家的产品(亲儿子),需要引入Spring的包才能使用
  • 默认是按照类型byType来自动装配的
  • 如果要通过name来装配(byName),需要配合另一个注解@Qualifier使用
    如图所示:

    @Autowired源码

    @Qualifier源码

@Resource

  • 这是JDK中自带的注解,但是Spring也是支持这个注解
  • @Resource默认是byName,也就是通过名称来装配Bean
  • 如果要通过类型来装配,需要声明byType指定类型

如图