关于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

转载于:https://www.cnblogs.com/zypu/p/6593827.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
代码报错<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:comtext="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <!-- 1 准备目标类 --> <bean id="personDao" class="com.sc.spring.dao.impl.PersonDaoImpl"></bean> <!-- 2 准备增强类 --> <bean id="myAdvice" class="com.sc.spring.utils.MyAdvice"></bean> <!-- 3 织入 将增强类的增强方法应用到目标类的目标方法前后 --> <aop:config> <!-- pointcut标签声明切入点表达式 切入点表达式就是一种规则 spring aop根据规则找到满足规则的目标方法 然后对目标方法前后进行指定增强 --> <aop:pointcut id="pc" expression="execution(public boolean com.sc.spring.dao.impl.PersonDaoImpl.getPersonByUsernameAndPwd(java.lang.String,java.lang.String))"></aop:pointcut> <aop:aspect ref="myAdvice"> <!-- aop:before标签代表配置前置通知 method属性是配置增强类哪个方法作为前置通知执行 --> <aop:before method="before" pointcut-ref="pc"></aop:before> </aop:aspect> </aop:config> </beans>报错问题是org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 22 in XML document from class path resource [aop.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 22; columnNumber: 17; cvc-complex-type.2.4.c: 通配符的匹配很全面, 但无法找到元素 'aop:config' 的声明。
最新发布
06-06

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值