Spring学习(5):DI的配置

一.  一些概念

  应用程序中说的依赖一般指类之间的关系。

  泛化:表示类与类之间的继承关系、接口与接口之间的继承关系;

  实现:表示类对接口的实现;

  依赖:当类与类之间有使用关系时就属于依赖关系,不同于关联关系,依赖不具有“拥有关系”,而是一种“相识关系”,只在某个特定地方(比如某个方法体内)才有关系。

  关联:表示类与类或类与接口之间的依赖关系,表现为“拥有关系”;具体到代码可以用实例变量来表示;

  聚合:属于是关联的特殊情况,体现部分-整体关系,是一种弱拥有关系;整体和部分可以有不一样的生命周期;是一种弱关联;

  组合:属于是关联的特殊情况,也体现了体现部分-整体关系,是一种强“拥有关系”;整体与部分有相同的生命周期,是一种强关联;

  Spring IOC容器的依赖有两层含义:Bean依赖容器管理生命周期和Bean依赖容器注入Bean的依赖资源。Bean依赖容器:Bean依赖IOC容器创建Bean并管理Bean的生命周期。Bean依赖容器注入Bean的依赖资源:容器负责注入Bean的依赖资源,依赖资源可以使Bean、外部文件、常量等,在java中都反应为对象,并且由容器负责组装Bean之间的依赖关系。

  依赖注入的好处:(1)更好实践面向接口编程,代码清晰,可以动态替换bean依赖对象(外部资源)。(2)增加Bean的复用性、降低Bean之间的耦合。

二.  注入

  注入的方式有两种:构造器注入和setter注入。

  构造器注入:

    <!-- 构造器注入 静态工厂实例化注入、实例工厂实例化注入省略-->
    <bean id="dIHelloService1" class="self.springmvc.diConfig.service.impl.HelloServiceImpl">
        <!-- 参数索引注入 -->
        <constructor-arg index="0" value="Hello World,DI"/>
        <constructor-arg index="1" value="1"/>
    </bean>
    <bean id="dIHelloService2" class="self.springmvc.diConfig.service.impl.HelloServiceImpl">
        <!-- 参数名注入 bean构造器注入-->
        <constructor-arg name="msg" value="Hello World,DI"/>
        <constructor-arg name="size" value="2"/>
        <constructor-arg name="city" ref="city"/>
    </bean>
    <bean id="dIHelloService3" class="self.springmvc.diConfig.service.impl.HelloServiceImpl">
        <!--参数类型 -->
        <constructor-arg type="java.lang.String" value="Hello World,DI"/>
        <constructor-arg type="java.lang.Integer" value="3"/>
    </bean>

  setter注入,包含一些数据类型注入的演示(构造器注入也可以):

    <!-- setter方法注入 bean的setter方法 -->
    <bean id="dIHelloService4" class="self.springmvc.diConfig.service.impl.HelloServiceImpl">
        <!-- 注入不同的数据类型实例 -->
        <!-- 注入常量 -->
        <property name="msg" value="Hello World,DI"/>
        <property name="size" value="4"/>
        <!-- 注入Bean  setter注入-->
        <property name="city" ref="city"/>
        <property name="city2">
            <ref bean="city"/>
        </property>
        <!-- 注入List-->
        <property name="list" >
            <list value-type="java.lang.String">
                <value>张三</value>
                <value>李四</value>
                <value>王五</value>
            </list>
        </property>
        <!-- 注入Set-->
        <property name="set">
            <set value-type="java.lang.String">
                <value>张三S</value>
                <value>李四S</value>
                <value>王五S</value>
            </set>
        </property>
        <!-- 二维数组注入-->
        <property name="twoDiList">
            <array>
                <array>
                    <value>1</value>
                    <value>2</value>
                </array>
                <array>
                    <value>5</value>
                </array>
            </array>
        </property>
        <!-- Map注入 -->
        <property name="map">
            <map key-type="java.lang.String" value-type="java.lang.String">
                <entry>
                    <key>
                        <value>厦门</value>
                    </key>
                    <value>0592</value>
                </entry>
                <entry>
                    <key>
                        <value>泉州</value>
                    </key>
                    <value>05995</value>
                </entry>
            </map>
        </property>
        <!-- 注入java.util.Properties-->
        <property name="properties">
            <props>
                <prop key="1">李四</prop>
                <prop key="2">张三</prop>
            </props>
        </property>
        <!-- null值处理-->
        <property name="times">
            <null/>
        </property>
    </bean>
    <bean id="city" class="self.springmvc.diConfig.entity.City">
        <property name="code" value="350300"></property>
        <property name="name" value="XiaMen"></property>
    </bean>

  bean的注入:

    <!-- bean的注入-->
    <!-- 构造器注入-->
    <bean id="dIHelloService5" class="self.springmvc.diConfig.service.impl.HelloServiceImpl">
        <constructor-arg ref="city" name="city"></constructor-arg>
    </bean>
    <!-- setter注入 -->
    <bean id="dIHelloService6" class="self.springmvc.diConfig.service.impl.HelloServiceImpl">
        <property name="city">
            <ref bean="city"></ref>
        </property>
    </bean>

    <!-- 内部bean定义,对外部不可见-->
    <bean id="dIHelloService7" class="self.springmvc.diConfig.service.impl.HelloServiceImpl">
        <property name="city">
            <bean class="self.springmvc.diConfig.entity.City"/>
        </property>
    </bean>

  

转载于:https://www.cnblogs.com/knsbyoo/p/9217494.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值