Spring 学习笔记二 提到了构造器注入的方式
构造方法注入:只能通过有参构造方法注入
字面值含有特殊字符:
字面值:用字符串表示 如value = "259" 可通过<value> 元素标签或value属性注入如果字符串包含特殊字符,用
<value><![CDATA[xxx]]></value> 例子:<![CDATA[shanghai~~]]>
<constructor-arg type = "java.lang.String">
<value><![CDATA[shanghai~~]]></value>
</constructor-arg>
<constructor-arg type = "java.lang.String">
<value>shanghai</value>
</constructor-arg>
Bean的相互引用:
Bean的相互引用,可用ref属性或<ref>元素来完成。
也可以再属性或构造器包含Bean的
在Bean里再声明Bean(内部Bean),如下图: 因为bean是内部bean,外部的其他bean是引用不到他的,所以不需要写id
<bean ....>
<property name = "Audi">
<bean class = "car"> <!-- 不能被外部引用,不需要写id-->
<property xxx = "...">
<property xxx = "...">
<property xxx = "...">
</bean>
</property>
</bean>
Spring支持级联属性配置
person有个属性是car对象
前提是car对象创建了,才能直接对car.price 属性 赋值。 跟structs2不同。
<bean id ...>
<property name = "car.price" value = "..."><property> 为级联属性赋值
</bean>
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">
<!--
<bean id = "test" class="com.harry.spring.learning.User">
<property name="username" value="huanghong"></property>
<property name="password" value="harrysir"></property>
</bean>
-->
<!-- 使用构造器注入属性值,可指定参数的位置和类型以区分重载的构造器 -->
<bean id="car" class="com.harry.spring.learning.Car">
<constructor-arg value="Audi" index="0"></constructor-arg>
<constructor-arg value="300000" type="int"></constructor-arg>
<constructor-arg type = "java.lang.String">
<value><![CDATA[shanghai~~]]></value>
</constructor-arg>
</bean>
<bean id="person" class="com.harry.spring.learning.Person">
<property name="name" value = "Harry"></property>
<property name="age" value="20"></property>
<property name="car">
<bean class="com.harry.spring.learning.Car">
<constructor-arg value = "Ford"></constructor-arg>
<constructor-arg value = "250000"></constructor-arg>
<constructor-arg value = "shenzhen "></constructor-arg>
</bean>
</property>
<!--如果上面的car对象注释掉了,下面这行执行就会报错,Spring不会自动创建 -->
<property name="car.maxSpeed" value="200"></property> <!-- 级联属性 类对象的属性-->
</bean>
</beans>
前提是car对象创建了,跟structs2不同。