首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

关于spring中<util:/>的配置

2013-09-09 
关于spring中util:**/的配置原文http://lehsyh.iteye.com/blog/687752参考: http://www.java2s.com/Code

关于spring中<util:**/>的配置
原文http://lehsyh.iteye.com/blog/687752
参考: http://www.java2s.com/Code/Java/Spring/CreateListMapInContext.htm

探索<util/>命名空间
     事情的发展总是一段曲折前进的过程。当Spring刚出现时,开发者可以使用<list/>、<map/>、<set/>等元素定义集合,然而这些集合不能够在不同的受管Bean间进行复用。尽管开发者可以采用抽象Bean机制实现复用,但实在不怎么优雅。与此同时,开发者借助ListFactoryBean、MapFactoryBean和SetFactoryBean等对象能够定义出可供复用的集合。然而,这也不是很友好的做法。再后来,<util/>命名空间被Spring 2.x引入,这才使得集合的定义变得简单。

首先在spring的配置文件中添加

<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"   xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans                        http://www.springframework.org/schema/beans/spring-beans-2.0.xsd                       http://www.springframework.org/schema/util                       <a href="http://www.springframework.org/schema/util/spring-util-2.0.xsd">http://www.springframework.org/schema/util/spring-util-2.0.xsd">
 

1. <util:constant/>元素
比如某类存在如下字段定义  
public static final String hwStatic = "hello static constant"; 

如果希望以上属性取值作为受管Bean,可以如下配置:  
<util:constant id="hwConstant" static-field="test.HelloWorld.hwStatic"/>  

这样就将java代码中的常量hwStatic(在test包下的HelloWorld类中)配置给spring进行管理,id为另起的名字;
又eg:
<util:constant id="maxValue" static-field="java.lang.Integer.MAX_VALUE"/>  


  2. <util:property-path/>元素 
<bean id="property-path" path="helloWorld.hello"/>  <bean id="helloWorld" value="hi"/>  </bean> 

  这里path="helloworld.hello"就是指bean为"helloworld"的属性hello。

3. <util:properties/>元素
    "classpath:"表明,将从类路径上查找并装载xxx属性文件.  
<util:properties id="xxx" location="classpath:xxxxx.properties">  


4. <util:list/>元素 
<util:list id="listUtil" list-name="code"><bean id="abstractCollectionBean" abstract="true">      <property name="map">          <map>              <entry key="mapKey1" value="mapValue1">              <entry key="mapKey2" value="mapValue2">          </map>      </property>  </bean>
 
   继承了abstractCollectionBean的子bean  
<bean id="CollectionBean"  parent="abstractCollectionBean">      <property name="map">          <map merge="true" key-type="java.lang.String" value-type="java.lang.String">              <entry key="mapKey1" value="mapValue1Override"/>              <entry>                  <key><value>mapKey2</value></key>                  <value>mapValue2</value>              </entry>              <entry key="testBean" value-ref="testBean">          </map>      </property>  </bean>  <bean id="testBean" /> 

  
    为了简化MapFactoryBean对象的使用,可使用如下代码 :
<util:map id="mapUtil" map-value="first">      <entry key="2" value="two">      <entry key="3" value="three">  </util:map>  

  
6. <util:set/>元素
   同样的,为了简化SetFactoryBean对象,可使用如下代码 :
<util:set id="setUtil" set-name="code"><bean id="propertyPlaceholderConfigurer" ref="locations"/>      <property name="order" value="1"/>  </bean>    <util:list id="locations">      <value>userinfo.properties</value>  </util:list> 


    在导入了</p>命名空间后,等价于  
<bean id="propertyPlaceholderConfigurer"  p:locations-ref="locations" p:order="1" />          <util:list id="locations">         <value>userinfo.properties</value>     </util:list>
    
       实例:http://blog.csdn.net/daryl715/archive/2007/09/26/1802292.aspx
原创地址:http://wutheringsea.iteye.com/blog/647924

热点排行