Spring_屬性配置細節 1、若字面值包含特殊字元,可以使用<![CDATA[]] 把字面值包裹起來 例 : 2、ref屬性來建立bean之間的引用關係和級聯屬性賦值 2.1 定義User.java(見上一篇文章)和Manager.java Bean 2、2 配置spring xml文件 3、配置 ...
Spring_屬性配置細節
1、若字面值包含特殊字元,可以使用<[CDATA[]]>把字面值包裹起來
例:<value><![CDATA[<3333>^]]></value>
2、ref屬性來建立bean之間的引用關係和級聯屬性賦值
2.1 定義User.java(見上一篇文章)和Manager.java Bean
package com.test;
public class Manager {
private String name;
private User user;
public void setName(String name) {
this.name = name;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String toString() {
return "Manager [name=" + name + ", user=" + user + "]";
}
}
2、2 配置spring xml文件
<bean id="manager" class="com.test.Manager">
<property name="name" value="gg"></property>
<!-- 可以使用ref屬性來建立bean之間的引用關係 -->
<property name="user" ref="user1"></property>
<!-- 為級聯屬性賦值,註意:屬性需要先初始化後才能為級聯屬性賦值,否則會有異常,和struts2不同 -->
<property name="user.age" value="33" />**<!--這裡的user是Manager的屬性值,而不是ref引用的id-->**
<!-- 定義內部bean,不能被外部引用,只能內部使用 -->
<!-- <property name="user"> <bean class="com.test.User"> <constructor-arg
value="ccd" index="0"></constructor-arg> <constructor-arg value="30" index="1"></constructor-arg>
<constructor-arg value="13456" index="2"> </constructor-arg> </bean> </property>
<property name="user.age" value="33"/> -->
</bean>
3、配置集合、Map和Properties
3.1 配置集合List
修改Manager.java的user為List類型,並生成get set方法
private List<User> users;
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
配置xml文件
<bean id="manager1" class="com.test.collectic.Manager">
<property name="name" value="fei"></property>
<property name="users">
<!-- 使用list節點為List類型的屬性賦值 -->
<list>
<ref bean="user1" />
<ref bean="user2" />
</list>
</property>
</bean>
配置單例的集合bean,以供多個bean引用,需要用到util命名空間
引用命名空間:
配置xml文件
<util:list id="users">
<ref bean="user" />
<ref bean="user2" />
</util:list>
<!-- 測試引用 集合bean -->
<bean id="manager2" class="com.test.collectic.Manager">
<property name="name" value="fff"></property>
<property name="users" ref="users"></property>
</bean>
3.2 配置Map
<bean id="newManager" class="com.test.collectic.NewManager">
<property name="name" value="ya"></property>
<property name="users">
<map>
<entry key="小米" value-ref="user"></entry>
<entry key="小哈" value-ref="user2"></entry>
</map>
</property>
</bean>
3.3 配置Properties
新建Connect.java
package com.test.collectic;
import java.util.Properties;
public class Connect {
private Properties properties;
public Properties getProperties() {
return properties;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
@Override
public String toString() {
return "Connect [properties=" + properties + "]";
}
}
配置xml文件
<!--配置Properties屬性值,為了與hibernate整合需要用到 -->
<bean id="connect" class="com.test.collectic.Connect">
<property name="properties">
<!-- 使用props和prop子節點來為 Properties屬性賦值 -->
<props>
<prop key="user">root</prop>
<prop key="password">root</prop>
<prop key="jdbcUrl">jdbc:mysql:///user</prop>
<prop key="driverClass">com.mysql.jdbc.Driver</prop>
</props>
</property>
</bean>
4、通過p命名空間為bean的屬性賦值
<!-- 通過p命名空間為bean的屬性賦值,需要先導入p的命名空間,相比於傳統的更簡單 -->
<bean id="manager3" class="com.test.collectic.Manager" p:name="qin"
p:users-ref="users">
</bean>
5、結果預覽
Manager [name=qin, users=[User [name=aa, age=33, money=10.0, no=123456], User [name=cc, age=10, money=0.0, no=<3333>]]]
NewManager [name=ya, users={小米=User [name=aa, age=33, money=10.0, no=123456], 小哈=User [name=cc, age=10, money=0.0, no=<3333>]}]
Connect [properties={driverClass=com.mysql.jdbc.Driver, user=root, password=root, jdbcUrl=jdbc:mysql:///user}]