zoukankan      html  css  js  c++  java
  • Spring4.3学习之依赖注入和控制反转

    直接值引用:

    idref元素:

      idref只是简单的以误差检测的方式将容器中其他bean的id(字符串值而非引用bean)传递给<constructor-arg/><property/> 元素可以检测bean是否已经存在,类似于value属性,但是比其更好,因为能在容器部署时检查所引用http://i.cnblogs.com/EditPosts.aspx?opt=1bean是否已经存在。

      注意,从4.0开始不再支持idref元素的local属性,因为其不支持正则形式的参考bean,可用idref bean属性代替。

    引用其他的beans:

    ref元素:

    ref元素是<constructor-arg/>和<property/>里面的最终元素。能够引用容器管理的其他bean来设置指定的属性值。引用bean依赖于这个属性是否设置,且必须在属性设置之前初始化。(如果collaborator是一个singleton bean,其可能已经被容器初始化了。)所有的引用最后都是引用另一个对象。scopeing和validation依赖于是否指定id/name的对象通过bean,local,或parent属性。

      通过bean标签的<ref/>属性指定目标bean是最常用的形式,而已创建在同一容器或父容器中的任意bean,不管是否在同一个xml文件中。ref中的bean属性相当于id/name属性。

    通过parent属性创建一个在父容器中的bean的引用。

    内部bean:

    <constructor-arg/>和<property/>元素中的<bean/>叫内部bean。

    1 <bean id="outer" class="...">
    2     <!-- instead of using a reference to a target bean, simply define the target bean inline -->
    3     <property name="target">
    4         <bean class="com.example.Person"> <!-- this is the inner bean -->
    5             <property name="name" value="Fiona Apple"/>
    6             <property name="age" value="25"/>
    7         </bean>
    8     </property>
    9 </bean>

    内部bean不需要指定id/name,如果指定容器也不会将其用着标识,也会忽视scope属性。内部bean都是匿名的且由外部bean创建。不能注入到其他bean中,或独立访问它们。通常内部bean的scope跟外部bean的一样,但是允许destruction回调的scope不同。

    Collections:

      <list/>,<set/>,<map/>和<props/>元素来设置属性或参数为Java Collection形式的List,Set,Map,Properties类。

    <bean id="moreComplexObject" class="example.ComplexObject">
        <!-- results in a setAdminEmails(java.util.Properties) call -->
        <property name="adminEmails">
            <props>
                <prop key="administrator">administrator@example.org</prop>
                <prop key="support">support@example.org</prop>
                <prop key="development">development@example.org</prop>
            </props>
        </property>
        <!-- results in a setSomeList(java.util.List) call -->
        <property name="someList">
            <list>
                <value>a list element followed by a reference</value>
                <ref bean="myDataSource" />
            </list>
        </property>
        <!-- results in a setSomeMap(java.util.Map) call -->
        <property name="someMap">
            <map>
                <entry key="an entry" value="just some string"/>
                <entry key ="a ref" value-ref="myDataSource"/>
            </map>
        </property>
        <!-- results in a setSomeSet(java.util.Set) call -->
        <property name="someSet">
            <set>
                <value>just some string</value>
                <ref bean="myDataSource" />
            </set>
        </property>
    </bean>

    map的key或value,set的value可以是以下的任意元素

    bean|ref|idref|list|set|map|props|value|null

    Collection合并:

     
  • 相关阅读:
    (转)原始图像数据和PDF中的图像数据
    itextSharp 附pdf文件解析
    (转)pdf文件结构
    【iCore1S 双核心板_ARM】例程九:DAC实验——输出直流电压
    【iCore4 双核心板_FPGA】例程七:状态机实验——状态机使用
    【iCore4 双核心板_FPGA】例程六:触发器实验——触发器的使用
    【iCore4 双核心板_ARM】例程八:定时器PWM实验——呼吸灯
    【iCore4 双核心板_ARM】例程七:WWDG看门狗实验——复位ARM
    【iCore1S 双核心板_FPGA】例程七:基础逻辑门实验——逻辑门使用
    【iCore1S 双核心板_FPGA】例程六:状态机实验——状态机使用
  • 原文地址:https://www.cnblogs.com/law-luffy/p/5377606.html
Copyright © 2011-2022 走看看