二、spring IOC之DI注入(注入基本类型,复杂类型)

一、基本类型的注入

构造注入:
1.构造方法注入 :该实体类必须有对应构造方法

        <!-- 使用构造方式注入数据 
            constructor-arg: 对构造方法中的参数赋值
                    1index : 通过构造方法中参数的索引定位参数
                    2)name  : 通过构造方法中参数的名称定位参数
                    3type  : 通过构造方法中参数类型定位
                    ** 以上三个参数,是用来定位构造方法中参数的
                    4)value :对基本数据类型参数赋值
                    5)ref       :被spring管理的其他bean对象
                    ** 以上两个参数,是对构造方法中参数赋值的
        -->
        <constructor-arg name="gameName" value="王者荣耀" ></constructor-arg>

2.set方法注入
通过property标签 ,该实体类必须有对应set方法

 <!-- 创建对象交给spring容器管理 -->
             <bean id="accountService" class="cn.itcast.service.impl.AccountServiceImpl">
                 <!-- 创建对象交给spring容器管理 -->
             <bean id="accountService" class="cn.itcast.service.impl.AccountServiceImpl">
                <!-- 通过set方式注入数据 
                    property 
                        1)name : set方法后面的部分,首字母小写
                        2)value:注入基本类型数据
                        3)ref:注入被spring管理的其他bean对象
                        4)value-ref:注入复杂类型

                    对于property,调用set方法进行赋值
                        name            gameName
                        methodName      setGameName
                        反射调用
                -->
                <property name="gameName"  value="绝地求生"></property>
                <property name="age" value="15"></property>
             </bean>

二、复杂类型注入

1复杂类型之(集合):
数组类型: list set array 结合 其子标签value

<!-- 创建对象交给spring容器管理 -->
     <bean id="accountService" class="cn.it.service.impl.AccountServiceImpl">
        <property name="gameNames">
            <!-- 
                可以通过array结合value对象数组类型的数据赋值
                list结合value
                set结合value
             -->
<!--            <array>
                <value>王者荣耀</value>
                <value>LOL</value>
            </array> -->
            <set>
                <value>王者荣耀</value>
                <value>LOL</value>
            </set>
        </property>
     </bean>

2注入复杂类型之key-value类型(map,property):

key-value类型:

  1. map结合其子标签 entry 默认创建linkedHashSet存储

  2. props结合其子标签 prop 默认创建property

<bean id="accountService" class="cn.it.service.impl.AccountServiceImpl">
        <!-- 对于注入key value类型的数据
            可以使用map结合entry注入
            props 结合 prop 注入
        <property name="properties">
<!--        <map>
                <entry key="王者荣耀" value="12"></entry>
                <entry key="绝地求生" value="15"></entry>
            </map> -->
            <props>
                <prop key="王者荣耀">12</prop>
                <prop key="绝地求生">15</prop>
            </props>
        </property>
     </bean>

3.嵌套方式注入 通过value-ref属性

<?xml version="1.0" encoding="UTF-8"?>
<!-- 导入约束 :xsd -->
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util 
        http://www.springframework.org/schema/util/spring-util.xsd
        ">
     <!-- 创建对象交给spring容器管理 -->
     <bean id="accountService" class="cn.itcast.service.impl.AccountServiceImpl" >
        <!-- 对于注入key value类型的数据
            可以使用map结合entry注入
            props 结合 prop 注入
         -->
        <property name="maps">
            <map>
                <entry key="王者荣耀" value-ref="mapList"></entry>
                <entry key="绝地求生" value-ref="mapList"></entry>
            </map>
        </property>
     </bean>

     <!-- 创建list集合 -->
     <util:list id="mapList">
        <value>1</value>
        <value>2</value>
        <value>3</value>
     </util:list>


</beans>
阅读更多
个人分类: 2Spring学习
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭