Spring DI依赖注入(1) xml方式实现注入

DI(Dependecy Inject,依赖注入)是对IOC概念的不同角度的描述,是指应用程序在运行时,每一个bean对象都依赖IOC容器注入当前bean对象所需要的另外一个bean对象。 

目录

一、DI实现方式

二、set注入数据的类型

三、构造注入数据的类型


一、DI实现方式

1.set注入=通过set方法维护对象之间的依赖关系

2.构造注入=通过构造方法维护对象之间的依赖关系

3.属性注入(不推荐)

二、set注入数据的类型

xml实现set注入I实现步骤:

        1.思考需要什么类的什么属性;

        2.给属性提供set方法;

        3.在bean标签内部开始配置:

                配置位置:<bean>此位置</bean> 

                配置语法:<property id="属性值" class="属性值"></property>

                配置属性:

                        name====>属性名称

                        value====>属性值

                        ref======>属性值的引用

1.注入对象

<!--    set注入对象三层模型(手动装配)-->
    <bean id="controllerImp" class="com.apesource.controller.ControllerImp">
        <property name="service" ref="serviceImp"></property>
    </bean>

    <bean class="com.apesource.service.ServiceImp" id="serviceImp">
        <property name="dao" ref="daoImp"></property>
    </bean>

    <bean class="com.apesource.dao.DaoImp" id="daoImp"></bean>
<!--开启自动装配默认按照名称-->
default-autowire="byName"
<!--    自动装配(set)-->
<!--    autowire设置为byType,按照类型装配,与名称无关-->
    <bean id="1212" class="com.apesource.Dao.DaoImp"></bean>

    <bean id="service" class="com.apesource.service.ServiceImp" autowire="byType"></bean>

    <bean id="controller" class="com.apesource.controller.ControllerImp"></bean>

2.注入基本类型和String(引用类型)

<!--set注入基本类型和String-->
    <bean id="student" class="com.apesource.pojo.Student">
        <property name="stuName" value="张三丰"></property>
        <property name="stuSex" value="男"></property>
        <property name="stuAge" value="99"></property>

    </bean>

 3.注入复杂类型list、arry、set、map、properties

<!--set注入复杂类型-->
    <bean id="teacher" class="com.apesource.pojo.Teacher">
        <property name="myList">
            <list>
                <value>赵钱孙李</value>
                <value>周吴郑王</value>
                <value>冯陈褚卫</value>
            </list>
        </property>
        <property name="mySet">
            <set>
                <value>蒋沈韩杨</value>
                <value>朱秦尤许</value>
                <value>何吕施张</value>
            </set>
        </property>
        <property name="myMap">
            <map>
                <entry key="水木年华" value="一生有你"></entry>
                <entry key="李健" value="君子行"></entry>
                <entry key="李宗盛" value="山丘"></entry>
            </map>
        </property>
        <property name="myArray">
            <array>
                <value>贝加尔湖畔</value>
                <value>门</value>
                <value>玛琳娜</value>
            </array>
        </property>
        <property name="properties">
            <props>
                <prop key="刘惜君">我很快乐</prop>
                <prop key="林俊杰">愿与愁</prop>
                <prop key="李健">传奇</prop>
            </props>
        </property>
    </bean>
</beans>

三、构造注入数据的类型

xml实现构造注入DI实现步骤:

        1.思考需要哪一个实体类的有参构造方法

        2.给属性提供构造方法

        3.在bean标签内部开启配置

                配置位置:<bean>此位置</bean>

                配置语法:<constructor-arg 属性名="属性值"></constructor-arg>

                配置属性:

                        name=====>构造方法参数名称

                        index=====>构造方法参数下标

                        type======>构造方法参数类型

                        value=====>属性值

                        ref=======>属性值的引用
    1.构造注入对象

<!--    手动装配-->
<!--构造注入对象-->
    <bean id="daoImp" class="com.apesource.Dao.DaoImp"></bean>

    <bean id="serviceImp" class="com.apesource.service.ServiceImp">
        <constructor-arg name="dao" ref="daoImp"></constructor-arg>
    </bean>

    <bean id="controllerImp" class="com.apesource.controller.ControllerImp">
        <constructor-arg name="service" ref="serviceImp"></constructor-arg>
    </bean>

2.构造注入基本类型和引用类型(以String为例)

    <!--构造注入基本类型与String方式1-->
    <bean id="student1" class="com.apesource.pojo.Student">
        <constructor-arg name="stuName" value="张三"></constructor-arg>
        <constructor-arg name="stuAge" value="23"></constructor-arg>
    </bean>

    <!--构造注入基本类型与String方式2-->
    <bean id="student2" class="com.apesource.pojo.Student">
        <constructor-arg index="0" value="李四"></constructor-arg>
        <constructor-arg index="1" value="21"></constructor-arg>
    </bean>

    <!--构造注入基本类型与String方式3-->
    <bean id="student3" class="com.apesource.pojo.Student">
        <constructor-arg type="java.lang.String" value="王五"></constructor-arg>
        <constructor-arg type="int" value="23"></constructor-arg>
    </bean>

3.构造注入不支持注入复杂类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sorenw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值