当前位置:   article > 正文

正确区分@Autowire和@Resource注解的区别_关于@autowired 和@resource 注解,下面哪个是正确的

关于@autowired 和@resource 注解,下面哪个是正确的

大家都知道这两个注解可以实现bean的注入

@Autowired 这个是spring的注解    org.springframework.beans.factory.annotation.Autowired

@Resource 这属于java自带的注解   javax.annotation.Resource

 

@Autowired默认是按照类型来注入的,默认情况下要求依赖对象必须存在。

  • 如果允许依赖对象为null,需设置required属性为false,

需要按名字注入的话可以跟@Qualifier搭配使用

@Resource是按照里面的name属性来注入的

  • 如果没有指定name
  1. 当注解在字段上时,默认取name=字段名称装配。
  2. 当注解在setter方法上时,默认取name=属性名称装配。
  • 当按照名称(by-name)装配未匹配时,按照类型(by-type)装配。
  1. 当显示指定name属性后,只能按照名称(by-name)装配。

@Resoure装配顺序

  1. 如果同时指定name和type属性,则找到唯一匹配的bean装配,未找到则抛异常;
  2. 如果指定name属性,则按照名称(by-name)装配,未找到则抛异常;
  3. 如果指定type属性,则按照类型(by-type)装配,未找到或者找到多个则抛异常;
  4. 既未指定name属性,又未指定type属性,则按照名称(by-name)装配;如果未找到,则按照类型(by-type)装配。

对比一下

对比项@Autowire@Resource
注解来源Spring注解JDK注解(JSR-250标准注解,属于J2EE)
装配方式优先按类型优先按名称
属性requiredname、type
作用范围字段、setter方法、构造器字段、setter方法

推荐使用@Resource

  • 注解属于J2EE,减少与Spring耦合
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/307911
推荐阅读
相关标签
  

闽ICP备14008679号