zoukankan      html  css  js  c++  java
  • @Resource注解和@Autowired注解

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

        

  • 相关阅读:
    Java实现字符串的包含
    Java实现字符串的包含
    Java实现字符串的包含
    Java实现字符串的包含
    Java实现字符串的包含
    穷文富理撑死工,得先学门能挣钱的手艺
    Windows更新清理工具 (winsxs 清理工具)
    SQLite实现内存键值存储
    Qt5.7.0移植到4412
    罗辑思维2014 第11集 迷茫时代的明白人(慢慢来,能做一点是一点),有书卖
  • 原文地址:https://www.cnblogs.com/fanerwei222/p/11770982.html
Copyright © 2011-2022 走看看