外部引入
在需要引入对象之前,先声明这个对象,告诉bean为我们准备一个需要的对象,下面以Date作为例子
<!--告诉对象准备一个Date对象 -->
<bean id="date1" class="java.util.Date"></bean>
<bean id="mouse1" class="com.msb.bean.Mouse">
<property name="name" value="Jerry"></property>
<!--bean引用 引用外部bean-->
<property name="birthdate" ref="date1"></property>
</bean>
内部引入
假设我们有一个猫类和一个老鼠类,猫类中有一个老鼠了的属性。当我们需要为猫类引用老鼠类对象时,可以直接在声明猫类的内部为属性赋值的时候,再来声明这个老鼠类,为这个老鼠类来赋值。如下例所示。
<bean id="cat1" class="com.msb.bean.Cat">
<property name="name" value="Tom"></property>
<!--bean引用 引用内部bean-->
<property name="mouse1">
<bean class="com.msb.bean.Mouse">
<property name="name" value="Jerry2"></property>
<property name="birthdate">
<bean class="java.util.Date"></bean>
</property>
</bean>
</property>
</bean>
级联引入
和内部引入对象类似,在引入对象之前,先声明这个对象,但是不赋值,在用到的时候再来为这个被引用到的对象来赋值,但是需要注意的是就,级联引入用到的实际是反射机制调用get/set方法来为被引用对象赋值,所以在猫类需要提供相应的get/set方法。下面是例子
<bean id="mouse2" class="com.msb.bean.Mouse"></bean>
<bean id="cat2" class="com.msb.bean.Cat">
<property name="name" value="Tom2"></property>
<!--级联引入bean-->
<property name="mouse1" ref="mouse2"></property>
<!--用反射调用get***方法,获得对象之后,再赋值-->
<property name="mouse1.name" value="Jerry3"></property>
<property name="mouse1.birthdate">
<bean class="java.util.Date" ></bean>
</property>
</bean>