40.@Autowired和@Resource之间的区别

@Autowired和@Resource之间的区别

  • @Autowired默认是按照类型byType装配注入的,默认情况下它要求依赖对象必须存在(可以设置它required属性为
    false)。组件id的方式需要与@Qualifier(“name”)配合使用
  • @Resource默认是按照名称byName来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入。
  • @Autowired 和 @Resource 来自不同的“父类”,其中 @Autowired 是 Spring 定义的注解,而 @Resource 是 Java 定义的注解,它来自于 JSR-250(Java 250 规范提案)。
  • @Autowired只包含一个参数:required,标明是否开启自动注入,默认是true。而@Resource包含七个参数,最重要的两个参数是:name 和 type,用来指定注入的方式。

扩展

1、两者的相同点:

  • 两者都是实现Bean的注入功能
  • 两者都可以写在属性字段或者setter方法上。两者如果都写在属性字段上,setter方法可以省略掉。

2、@Autowired 查找顺序

  • @Autowired 是先根据类型(byType)查找,如果存在多个 Bean 再根据名称(byName)进行查找,

你可能感兴趣的:(spring,java,intellij-idea,java-ee,spring,boot,spring,cloud,jvm)