zoukankan      html  css  js  c++  java
  • SpringIOC的自动注入

    问题:

    SpringIOC的DI依赖注入后,我们可以根据对象之间的依赖关系的 责任链,让Spring容器对象帮我们创建有一个组装好的对象,比如A中有B,B 中有C,C中有D.将A,B ,C,D都创建为Bean对象,然后使用ref属性告诉Spring 对象之间的依赖关系的组装规则,假如依赖责任链特别长,使用ref注入就会很 麻烦.怎么办?

    解决:

    不要声明ref属性来指明依赖关系的注入,只需要告诉Spring容器对象依赖关 系的注入规则,Spring容器对象自动根据规则完成依赖关系的注入.

      实现:

    ①根据bean的ID和属性名一致的规则

    ②根据bean的类型和属性的类型一致的规则

    ③根据构造器形参的类型和bean的类型一致的规则

    ④不能使用自动注入,只能手动声明

    ⑤使用默认规则

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
           default-autowire="byName"><!--设置自动注入-->
        <!--
           自动注入:
           在标签上使用autowire属性设置自动注入规则.该属性声明在要注入资源的bean标签上,比如:学生的bean
             autowire属性的值:
               byName:按照属性名和某个bean的id相同的规则自动注入
               byType:按照属性的类型和某个bean的类型相同的规则自动注入.
                   注意:同类型的bean只能有一个,否则报错.
               constructor:
                   必须声明对应的构造器,根据构造器形参的类型和某个bean的类型相同的规则自动注入.
               no:不使用自动注入,必须使用ref手动注入.
               default:使用默认注入规则.默认值.
               注意:
                    可以在beans顶层元标记中使用属性default-autowire声明全局自动注入规则.
       -->
        <bean id="stu" class="com.bjsxt.pojo.Student" autowire="byName">
            <!--用构造器的方法,此处要创建一个只有Teacher一个参数的构造器-->
            <!--<constructor-arg index="0" type="com.Teacher"  ref="tea"></constructor-arg>-->
            <property name="sid" value="1"></property>
            <property name="sname" value="张三"></property>
        </bean>
        <bean id="teacher" class="com.bjsxt.pojo.Teacher">
            <property name="tname" value="liu"></property>
            <property name="tid" value="1"></property>
        </bean>
    </beans>
    

      

  • 相关阅读:
    Java59道常见面试题,内附答案
    2020年一个月时间面试字节跳动,面试经历分享(已拿offer)
    阿里总结的《Java成神之路》 PDF 火了,完整版开放下载!
    Github14k堪称神级的Spring Boot手册,从基础入门到实战进阶
    三面阿里(支付宝)Java高开岗,复习两月有幸拿到offer
    Java 最常见的 200+ 面试题:面试必备
    【面试总结】终于拿到了美团offer了,没有辜负了这三个月的努力啊
    阿里P9都赞不绝口的面试宝典!半月看完25大专题,居然斩获阿里P7offer
    Integer是int
    抽象类和接口
  • 原文地址:https://www.cnblogs.com/vincentmax/p/14298816.html
Copyright © 2011-2022 走看看