所有的基本数据类型我们都可以在property标签中使用value属性进行赋值,而所有的复杂数据类型的赋值都必须在property的标签体中进行
使用ref引用IOC容器中其他已经注入的对象
<bean id="rule1" class="com.hao.spring.user.Rule"> <property name="ruleName" value="数据查看角色"></property> <property name="power" value="全数据查看权限"></property> </bean> <bean id="user" class="com.hao.spring.user.User"> <property name="userName" value="set-qianghao"></property> <property name="sex" value="set-man"></property> <property name="age"> <null></null> </property> <property name="rule" ref="rule1"></property> </bean>需要注意的是引用外部对象时user并不会创建一个新的对象,而是严格的根据对象的内存地址进行数据引用,所以当我们修改这个对象中的数据时,其实修改的就是容器中的rule1对象
为了避免上面的情况,我们可以在对象类型的property中使用bean标签再创建一个内部引用对象,为我们的对象类型数据进行初始化赋值
这时我们再修改user中的rule对象就不会对容器中的rule1产生影响了
需要注意的是内部bean是不能从容器中单独获取的,只能和引用它的bean绑定使用
在property或者constructor-arg中使用< null >标签进行null值的赋值
<property name="age"> <null></null> </property>为list赋值也分为引用内部对象和引用外部对象
<property name="ruleArray"> <list> <ref bean="rule1"/><!-- 引用外部bean --> <ref bean="rule2"/> <bean id="rule3" class="com.hao.spring.user.Rule"><!-- 引用内部bean --> <property name="ruleName" value="123"></property> <property name="power" value="456"></property> </bean> </list> </property>在property中使用map标签为map数据类型赋值,同样的map赋值也分为引用内部bean和引用外部bean
<property name="map"> <map> <entry key="name" value="qianghao"></entry> <entry key="sex" value="man"></entry> <entry key="rule" value-ref="rule1"></entry><!-- 引用外部bean --> <entry key="rule2"> <bean class="com.hao.spring.user.Rule"><!-- 引用内部bean --> <property name="ruleName" value="123"></property> <property name="power" value="456"></property> </bean> </entry> </map> </property>
级联属性就是指当前类中引用了对象类型的属性,而这个引用对象的属性就是级联属性
为级联属性赋值分为两种情况:
引用内部类 直接在声明内部类时进行赋值引用外部类 <bean id="user" class="com.hao.spring.user.User"> <property name="rule" ref="rule1"></property> <property name="rule.power" value="引用后修改的权限power"></property> </bean>需要注意的是这样修改同样会将容器中的对象数据修改掉