• 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}]
    
    作者:starryfeiii
    出处:http://www.cnblogs.com/feiii/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,原文链接否则保留追究法律责任的权利。
  • 相关阅读:
    转载 Markdown 写法 直接考代码 反正博客园支持
    最全的ADB命令行大全(转)
    Python 帮你玩微信跳一跳 GitHub Python脚本
    React中setState的怪异行为 ——setState没有即时生效
    详解es6中Proxy代理对象的作用
    react-router和react-router-dom的区别
    webpack4 Cannot find module '@babel/core'
    vue-devtools的安装与使用
    Vuex的mapGetters方法使用报错
    vuex直接修改state 与 用commit提交mutation来修改state的差异
  • 原文地址:https://www.cnblogs.com/feiii/p/6298749.html
Copyright © 2020-2023  润新知