一:引入外部的bean
<bean id="studentFive" class="com.tian.spring.pojo.Student">
<property name="sid" value="1004"></property>
<property name="sname" value="赵六"></property>
<property name="age" value="26"></property>
<property name="gender" value="男"></property>
<!--ref:引用IOC容器中的某个bean的id-->
<property name="clazz" ref="clazzOne"></property>
</bean>
<bean id="clazzOne" class="com.tian.spring.pojo.Clazz">
<property name="cid" value="1111"></property>
<property name="cname" value="最强王者"></property>
</bean>
测试类:
@Test
public void testDI(){
//获取IOC容器
ApplicationContext ioc = new ClassPathXmlApplicationContext("spring-ioc.xml");
//获取bean
Student student = ioc.getBean("studentFive", Student.class);
System.out.println(student);
}
结果:
Student{sid=1004, sname='赵六', age=26, gender='男', score=null, clazz=Clazz{cid=1111, cname='最强王者'}}
二:级联方式
<bean id="studentFive" class="com.tian.spring.pojo.Student">
<property name="sid" value="1004"></property>
<property name="sname" value="赵六"></property>
<property name="age" value="26"></property>
<property name="gender" value="男"></property>
<property name="clazz" ref="clazzOne"></property>
<!--级联的方式,要保证提前为clazz属性赋值或者实例化-->
<property name="clazz.cid" value="2222"></property>
<property name="clazz.cname" value="远大前程班"></property>
</bean>
<bean id="clazzOne" class="com.tian.spring.pojo.Clazz">
<property name="cid" value="1111"></property>
<property name="cname" value="最强王者班"></property>
</bean>
结果:
Student{sid=1004, sname='赵六', age=26, gender='男', score=null, clazz=Clazz{cid=2222, cname='远大前程班'}}
注意使用级联的方式一定要先为clazz属性赋值或者实例化
否则报NullValueInNestedPathException错误
三:内部bean
<bean id="studentFive" class="com.tian.spring.pojo.Student">
<property name="sid" value="1004"></property>
<property name="sname" value="赵六"></property>
<property name="age" value="26"></property>
<property name="gender" value="男"></property>
<property name="clazz">
<!--内部bean,只能在当前bean的内部使用,不能直接通过IOC容器获取-->
<bean id="clazzInner" class="com.tian.spring.pojo.Clazz">
<property name="cid" value="2222"></property>
<property name="cname" value="远大前程班"></property>
</bean>
</property>
</bean>
结果:
Student{sid=1004, sname='赵六', age=26, gender='男', score=null, clazz=Clazz{cid=2222, cname='远大前程班'}}