Spring依赖注入为类属性赋值的方式
这里有三种方式:
1.外部bean
引用IOC容器中的某个bean的id
2.使用级联的方式为bean赋值
要保证提前为clazz属性赋值或实例化
3.使用内部bean
只能在当前的内部使用,不能直接通过ioc容器获取
场景为在Student类中定义一个类类型的属性Clazz,我们去给这个类类型的属性赋值
以下为代码解析:
1.使用外部bean
<bean id="studentFive" class="com.qcw.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>
</bean>
<bean id="clazzOne" class="com.qcw.spring.pojo.Clazz">
<property name="cid" value="1111"></property>
<property name="cname" value="王者班"></property>
</bean>
2.使用级联的方式
级联的方式保证提前为clazz属性赋值或实例化,所以还需要定义如下的clazzOne类来先给这个类的属性赋值,其原因就是在studentFive这个bean里无法直接以class.cid的方式赋值,与mybatis的级联不同,这里的clazz本身就为null,所以无法通过类名.属性来赋值
<bean id="studentFive" class="com.qcw.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>
//使用级联的方式为bean赋值,要保证提前为clazz属性赋值或实例化
<property name="clazz" ref="clazzOne"></property>
<property name="clazz.cid" value="2222"></property>
<property name="clazz.cname" value="星耀班"></property>
</bean>
<bean id="clazzOne" class="com.qcw.spring.pojo.Clazz">
<property name="cid" value="1111"></property>
<property name="cname" value="王者班"></property>
</bean>
3.使用内部bean
只能在当前的内部使用,不能直接通过ioc容器获取
<bean id="studentFive" class="com.qcw.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 id="clazzInner" class="com.qcw.spring.pojo.Clazz">
<property name="cid" value="2222"></property>
<property name="cname" value="星耀班"></property>
</bean>
</property>
</bean>