原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11770982.html

1. @Resource

  类来源: javax(Java扩展包)

  类全称: javax.annotation.Resource

  默认注入方式: byName(反射机制)

  定义对象: 变量, set方法

  重要属性: name(Spring解析为Bean的名称), type(Spring解析为Bean的Java类型)

  指定注入方式:

    a) 如果使用name属性,则使用byName自动注入策略--> @Resource(name = "good")

    b) 如果使用type属性,则使用byType自动注入策略--> @Resource(type = java.lang.String.class)

  Bean查找规则:

    a) 同时指定了name和type, 则在Spring上下文中找到唯一匹配的Bean, 找不到抛出异常--> @Resource(name = "good", type = java.lang.String.class)

    b) 指定了name, 则在Spring上下文中找到名称(使用注解注册的Bean的name一般为类名称的驼峰写法)匹配的Bean进行装配,找不到或者找到多个则抛出异常-->@Resource(name = "good")

    c) 指定了type, 则在Spring上下文中找到匹配的唯一Bean进行装配, 找不到或者找到多个则抛出异常-->@Resource(type = java.lang.String.class)

    d) 没有指定name或者type, 按照byName进行查找装配, 如果没有匹配, 则回退到一个原始类型(比如String hello变量的原始类型就是java.lang.String)进行匹配(根据type匹配原始类型), 找不到或者找到多个则抛出异常 .

2. @Autowired

  类来源: Spring

  类全称: org.springframework.beans.factory.annotation.Autowired

  默认注入方式: byType

  定义对象: 变量, 构造器注入, set方法

  重要属性: Qualifier,required

  指定注入方式: 默认为byType

  Bean查找规则:

    a) 默认是要对象必须存在的, 如果允许对象为null, 则要设置 required = false

    b) 如果是根据类型查找, 有多个相同类型(is-a)的实现类,那么会抛出异常 , 此时需要加上@Qualifier("hello")注解指定注入的Bean的标识名称(不一定特指id或者name,就是指的@Service("thisTarget")中的thisTarget这个值,也不排除没有这个值自动查找其id或者name的可能性), 则按照标识名称去查找,若有多个相同名称的Bean,则抛出异常.

    

@Resource注解和@Autowired注解的更多相关文章

  1. @Autowired注解与@Resource注解的区别与用法

    Spring不但支持自己定义的@Autowired注解,还支持JSR-250规范定义的几个注解.如:@Resource.@PostConstruct及@PreDestroy 1. @Autowired ...

  2. Spring5:@Autowired注解、@Resource注解和@Service注解

    什么是注解 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分 ...

  3. Spring中@Autowired注解、@Resource注解的区别

    Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@PostConstruct以及@PreDestroy. @Resour ...

  4. 转:Spring中@Autowired注解、@Resource注解的区别

    Pay attention: When using these annotations, the object itself has to be created by Spring context. ...

  5. @Resource 和 @Autowired注解的异同

    @Resource 和 @Autowired注解的异同 @Autowired 默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false 例 ...

  6. Spring中@Autowired注解、@Resource注解的区别 (zz)

    Spring中@Autowired注解.@Resource注解的区别 Spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@ ...

  7. 04 Spring的@Autowired注解、@Resource注解、@Service注解

    什么是注解 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事务,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分 ...

  8. Spring中Autowired注解,Resource注解和xml default-autowire工作方式异同

    前面说到了关于在xml中有提供default-autowire的配置信息,从spring 2.5开始,spring又提供了一个Autowired以及javaEE中标准的Resource注释,都好像可以 ...

  9. @Resource与@Autowired注解的区别

    一.写本博文的原因 年初刚加入到现在的项目时,在使用注解时我用的@Resource.后来,同事:你怎么使用@Resource注解?我:使用它有错吗?同事:没错,但是现在都使用@Autowired.我: ...

随机推荐

  1. Oracle对表空间、用户、用户权限的操作

    一.对表空间的操作 1.创建表空间(create tablespace) -- 'hpdb_tablespace' 指定表空间名称 -- 'e:\hpdb.dbf' 指定表空间数据文件名称 -- si ...

  2. Swoole 中使用 Context 类管理上下文,防止发生数据错乱

    前面的文章中,我们说过:不能使用类静态变量 Class::$array / 全局变量 global $_array / 全局对象属性 $object->array / 其他超全局变量 $GLOB ...

  3. html 基础 vscode的常用快捷键

    1.ctrl+/ //注释代码 2.文件内容查找替换:ctrl+f ctrl+h ,替换一个ctrl+shift+1,替换所有ctrl+alt+enter 3.移动当前行,向上alt+up(方向键↑) ...

  4. frp + nginx 配置多人共用的http 内网穿透服务

    来源:简书   https://www.jianshu.com/p/c9d7527d607b 一. 前言 frp 是一个用Go语言开发的,可用于内网穿透的高性能的反向代理应用,支持 tcp, udp ...

  5. map类型转string必须用.toString

  6. spring cloud Zuul 多层拦截 --- 心得

    1.前言 根据教材.博客文章的实例实操,基本都是单层拦截,没有找到多层拦截的具体写法 ,让我走了很多弯路,我将其写在这里,以待以后参考. 2.环境 spring boot : 2.1.6.RELEAS ...

  7. C语言 运算符优先级和结合方向

    运算符优先级和结合方向 初级运算符( ).[ ].->..  高于  单目运算符  高于  算数运算符(先乘除后加减)  高于  关系运算符  高于  逻辑运算符(不包括!)  高于  条件运算 ...

  8. 第10组 Beta冲刺 (3/5)

    1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/p/14018630.html ·作业博客:https://edu.cnblogs.co ...

  9. 图形验证插件,百度编辑器拓展功能,NodeJs消息机制以及聊天室

    图形验证插件 网上找了很多图形验证插件,比较推荐verify.js <link rel="stylesheet" type="text/css" href ...

  10. C#进程调用FFmpeg操作音视频

    项目背景 因为公司需要对音视频做一些操作,比如说对系统用户的发音和背景视频进行合成,以及对多个音视频之间进行合成,还有就是在指定的源背景音频中按照对应的规则在视频的多少秒钟内插入一段客户发音等一些复杂 ...