zoukankan      html  css  js  c++  java
  • 关于spring中<util:/>的配置

    解决redis设置缓存时间找到的帖子,我这个初学者需要学习的还是很多的。

    原文地址:http://www.doc100.net/bugs/t/216322/index.html

    探索<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" class="test.HelloWorld">  
         <property name="hello" 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-class="java.util.ArrayList">  
        <value>first</valuse>  
        <value>two</valuse>  
        <value>three</valuse>  
        <value>ten</valuse>  
    </util:list> 

    它的作用就是在spring启动初始化bean时,给listUtil这个list赋值为这四个值。 下面的同理
    5. <util:map/>元素

    <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"  class="test.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" class="test.TestBean" /> 

           为了简化MapFactoryBean对象的使用,可使用如下代码 :

    <util:map id="mapUtil" map-class="java.util.HashMap">  
        <entry key="1" value="first">  
        <entry key="2" value="two">  
        <entry key="3" value="three">  
    </util:map>  

       6. <util:set/>元素    同样的,为了简化SetFactoryBean对象,可使用如下代码 :

    <util:set id="setUtil" set-class="java.util.HashSet">  
        <value>first</value>  
        <value>two</value>  
        <value>three</value>  
    </util:set>  

    7. 使用<p/>命名空间     在xml头加入 xmlns:p=http://www.springframework.org/schema/p;这里的p就是property的意思。        例如如下代码:  

    <bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="locations" ref="locations"/>  
        <property name="order" value="1"/>  
    </bean>  
      
    <util:list id="locations">  
        <value>userinfo.properties</value>  
    </util:list> 

        在导入了</p>命名空间后,等价于  

    <bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.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

  • 相关阅读:
    设计模式之代理模式
    Java面试总结系列之Collections.sort()
    Scala基础
    Win7 电脑设置临时网络,无法加入网络;internet禁止网络共享
    Java面试题系列 提高Java I/O 性能
    电子商务中:B2C、B2B、C2B、C2C、O2O、P2P
    JVM内存格局总结
    Dubbo相关博文整理
    Java面试题汇总(一)
    Java多线程总结
  • 原文地址:https://www.cnblogs.com/Jeely/p/11113917.html
Copyright © 2011-2022 走看看