DI的两种方式

构造器注入和setter注入

idref element

对一个bean id的引用

<bean id="theTargetBean" class="..."/>
<bean id="theClientBean" class="...">
    <property name="targetname">
        <idref bean="theTargetBean"/>
    <property>
</bean>

Inner beans

<bean id="out" class="com.jianglei.inner.Out">
        <property name="target">
            <bean class="com.jianglei.inner.Person">
                <property name="name" value="dengyi"/>
                <property name="age" value="18"/>
            </bean>
        </property>
    </bean>

强类型的集合

Null值和空字符

<!--空字符串 -->
<property name="email" value=""/>


<!-- NULL -->
<property name="email>
    <null/>
</property>

<constructor-arg index="0" value=""/>

<constructor-arg index="0">
    <null/>
</constructor-arg>

p-namespace

<bean id="p-namespace" class="com.jianglei.p.Foo"
            p:name="dengyi" p:obj-ref="obj"/>

c-namesapce

<bean id="c-namespace" class="com.jianglei.p.Foo"
          c:_0="dengyi" c:_1-ref="classic"/>
<bean id="c-namesapce2" class="com.jianglei.p.Foo"
          c:name="jianglei" c:obj-ref="classic"/>

depends-on

下面这个例子确保在A实例之前,其依赖的B先被实例化

<bean id="a" class="com.jianglei.depend.A" depends-on="b"/>

<bean id="b" class="com.jianglei.depend.B"/>

lazy-initialized

容器会预先初始化单例bean(原型bean不会预先初始化),这样可以提前发现错误。如果不需要这样的特性,就可以使用延迟初始化

<bean id="b" class="com.jianglei.depend.B" lazy-init="true"/>

容器级别的

<beans default-lazy-init="true">
    <!-- no beans will be pre-instantiated... -->
</beans>

results matching ""

    No results matching ""