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>