探索<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 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
原创地址:http://wutheringsea.iteye.com/blog/647924
相关推荐
<artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>...
09. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 10. </listener> 11. 12. <servlet> 13. <servlet-name>spring</servlet-name> 14. <servlet-class>org.spring...
<script src="/dwr/util.js"></script> <script> window.onload = function() { MyService.getData(function(data) { document.getElementById("result").innerHTML = data; }); }; </script> </head> <body...
<groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.16</version> </dependency> <!-- Servlet API --> <dependency> <groupId>javax.servlet</groupId> ...
<filter-name>CAS Filter</filter-name> <filter-class> edu.yale.its.tp.cas.client.filter.CASFilter </filter-class> <!-- server login url --> <init-param> <param-name> edu.yale.its.tp...
此外,使用`<util:map>`、`<util:list>`和`<util:set>`元素(引入了` xmlns:util="http://www.springframework.org/schema/util"`命名空间)可以提供更丰富的配置选项,如类型安全的注入和自定义初始化逻辑。...
<groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.x.x.RELEASE</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</...
在Spring的老版本中,通常使用`<context:property-placeholder>`或`<util:properties>`元素来加载属性文件。例如: ```xml <!-- 使用 context:property-placeholder --> <beans xmlns=...
6. `spring-util-4.0.xsd`:这是一个通用的DTD,提供了对类型安全的集合注入的支持,如`<util:list>`、`<util:map>`、`<util:properties>`等,方便了复杂配置的编写。 7. `spring-tool-4.0.xsd`:这个DTD主要服务于...
`spring-util-4.2.xsd.txt`文件可能是一个文本格式的说明文档,详细解释了`spring-util-4.2.xsd`中的元素和属性,这对于理解如何使用`<util>`命名空间配置Spring框架是非常有价值的。 总的来说,`spring-util-4.2....
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="packagesToScan"> ...
在Spring框架中,`util:命名空间`是一个非常实用的功能,它允许开发者更方便地配置集合类型(如List、Set、Map等)以及常量,从而简化XML配置文件的编写。下面将详细介绍如何使用`util:命名空间`来简化Spring配置。 ...
<bean class="ch.qos.logback.classic.util.ContextInitializer"> <property name="contextName" value="application" /> <property name="configLocation" ref="logbackConfigLocation" /> </bean> <!-- 扫描 ...
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <servlet> <servlet-name>CXFService</servlet-name> <servlet-class>org.apache.cxf.transport...
**表格17**: WEB-INF/dwr.xml配置文件中关于springbean的调用(必需设置) ```xml <dwr:direct object-ref="myService" scriptName="myService"> <dwr:remote-method name="doSomething" return="java.lang.String">...
- **`<util:list>`标签**:可以使用`<util:list>`标签来简化List类型的配置。 ```xml <util:list id="cars"> <ref bean="car"/> <ref bean="car2"/> </util:list> ``` - **`p:`命名空间**:通过`p:`命名...
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-...
现在我们将深入探讨如何在Spring Boot项目中集成MyBatis的XML配置,并支持JSP视图解析。 首先,为了在Spring Boot项目中引入MyBatis,我们需要在`pom.xml`文件中添加MyBatis及其依赖,包括Spring Boot对MyBatis的...
<groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.x</version> </dependency> <!-- MySQL驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql...
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <servlet> <servlet-name>xfire</servlet-name> <servlet-class>org.springframework.web.servlet....