原创:转载需注明原创地址 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,则抛出异常.

    

最新文章

  1. Hibernate入门与简谈
  2. 购物车数字加减按钮HTML+CSS+JS(有需要嫌麻烦的小伙伴拿走不谢)
  3. 插入排序java代码
  4. try-catch-finally中return语句的执行
  5. SlidingPaneLayout的基本使用
  6. ODAC with Oracle Developer Tools for Visual Studio
  7. 【HTML+CSS】浅谈:相对定位与绝对定位
  8. mysql的高级用法
  9. Eclipse Bug: Unhandled event loop exception No more handles
  10. python爬虫之基本知识
  11. Junit test使用
  12. 详解EBS接口开发之供应商导入补充-供应商地点增加实例
  13. python的sorted
  14. UnicodeEncodeError: 'ascii' codec can't encode character...的解决方法
  15. Idea构建maven项目
  16. 优先队列重载<运算符
  17. Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)
  18. maven 项目使用本地jar
  19. 关于 Nginx 配置 WebSocket 400 问题
  20. Java基础 【类之间的关系】

热门文章

  1. 编写Java程序,通过接口摸拟麦当劳食物生产过程,接口设计
  2. Docker基本命令入门
  3. Hbase单点安装Version1.1.5
  4. Ant: macrodef
  5. spring boot 单元测试 --- 在测试类使用 javabean注解操作接口
  6. github 创建网络仓库 ,使用git工具将本地文件上传/删除 --- 心得
  7. Mysql的存储过程摘要
  8. Sentry 开发者贡献指南 - 数据库迁移
  9. ProE许可、PTC许可、Creo许可、许可分析、分析许可
  10. C#winform控件序列化,反序列化