spring学习-2

Spring_属性配置细节

1、若字面值包含特殊字符,可以使用把字面值包裹起来

<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}]
posted @ 2017-01-19 00:20  starryfei  阅读(403)  评论(0编辑  收藏  举报