zoukankan      html  css  js  c++  java
  • Spring依赖注入—@Resource注解使用

    1.@Autowired默认按类型装配(这个注解是属于spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下: 

    @Autowired() 
    @Qualifier("baseDao") private BaseDao baseDao;


    2.@Resource(这个注解属于J2EE的),分为以下几种情况
      1)默认安照名称进行装配,名称可以通过name属性进行指定
      如:
    1  @Resource(name="student")    //这里的student是指bean的ID
    2     private Student student;

      2)如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找
       如:
     @Resource()         //未指定name,默认取将要注入属性的字段名,如下Student是类类型,student是属性名也就是字段名 
        private Student student;

      
      3)如果注解写在setter方法上默认取属性名进行装配。
      如:
        @Resource(name="student")  
        public void setStudent(Student student) {
            this.student = student;
        }

     



      4)当找不到与名称匹配的bean时才按照类型进行装配。
       如:
      java代码如下:
        @Resource()   
        private Student student;

     

      spring.xml如下:

    <bean id="student1" class="com.spring.chapter8.Student">
            <property name="name" value="张三"></property>
            <property name="age" value="23"></property>
        </bean>

    在Spring.xml文件中并没有student  的bean。当找不到与名称匹配的bean时才按照类型进行装配。我们运行也会成功。

     

    但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。否则会报错


    运行结果如下:
    spring.xml如下:


     java代码如下:


    运行结果:

    
    

    总结:
      1.@Resource注解既可以用在setter中也可以用在属性当中,当Resource指定属性name名字时,就只会按照指定的name去查找bean,否则会报错。

      2.当注解写在字段上时,@Resource不指定name,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。如果最后都找不到与名称匹配的bean时才按照类型进行装配。我们运行也会成功  
          3.推荐使用:@Resource注解在字段上,且这个注解是属于J2EE的,减少了与spring的耦合。最重要的这样代码看起就比较优雅。
     
  • 相关阅读:
    Spring+MyBatis纯注解零XML整合(4)
    spring boot-mybatis全注解化(3)
    SpringBoot使用Mybatis注解进行一对多和多对多查询(2)
    Spring Boot中使用MyBatis注解配置详解(1)
    mysql 俩个时间相减后取分钟
    mysql加减时间-函数-时间加减
    十种常见排序算法(转)
    开源VS商用,IBM区块链从Hyperledger到商用平台之道 | 对话IBM高级架构师【 笔记】(转)
    java中正则表达式基本用法(转)
    《数学之美》——维特比和他维特比算法
  • 原文地址:https://www.cnblogs.com/ysource/p/12826250.html
Copyright © 2011-2022 走看看