`
shiguanyin
  • 浏览: 9787 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

spring2.0配置中的新标签应用

阅读更多
spring2.0配置中的新标签应用2007-12-28 16:131,<util:constant/>
取代了之前通过FieldRetrevingFactoryBean获取bean静态常量的FactoryBean!


老的用法
<bean id="..." class="...">
<property name="isolation">
    <bean id="java.sql.Connection.TRANSACTION_SERIALIZABLE"
    class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" />
</property>
</bean>


新用法
<bean id="..." class="...">
    <property name="isolation">
        <util:constant static-field="java.sql.Connection.TRANSACTION_SERIALIZABLE"/>
    </property>
</bean>


2,<util:property-path/>
取代了之前通过PropertyPathFactoryBean来指定属性路径获取属性值的FactoryBean!

老的用法
<bean id="testBean" class="org.springframework.beans.TestBean" singleton="false">
<property name="age" value="10"/>
<property name="spouse">
    <bean class="org.springframework.beans.TestBean">
      <property name="age" value="11"/>
    </bean>
</property>
</bean>

<bean id="testBean.age" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>



新的用法
<bean id="testBean" class="org.springframework.beans.TestBean" singleton="false">
<property name="age" value="10"/>
<property name="spouse">
    <bean class="org.springframework.beans.TestBean">
      <property name="age" value="11"/>
    </bean>
</property>
</bean>

<util:property-path id="name" path="testBean.age"/>



3,<util:properties/>
替代了之前通过PropertiesFactoryBean来获取properties配制文件数据的FactoryBean!


老用法
<bean id="jdbcConfiguration" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location" value="classpath:com/foo/jdbc-production.properties"/>
</bean>



新用法
<util:properties id="jdbcConfiguration" location="classpath:com/foo/jdbc-production.properties"/>


4,<util:list/>
替代了之前通过<list><value></value></list>的内置配制方式,让多个bean调用同一list成为可能!

老的用法
<bean id="emails" class="org.springframework.beans.factory.config.ListFactoryBean">
<property name="sourceList">
      <list>
        <value>pechorin@hero.org</value>
        <value>raskolnikov@slums.org</value>
        <value>stavrogin@gov.org</value>
        <value>porfiry@gov.org</value>
      </list>
</property>
</bean>


新的用法
<util:list id="emails" list-class="java.util.LinkedList">
    <value>pechorin@hero.org</value>
    <value>raskolnikov@slums.org</value>
    <value>stavrogin@gov.org</value>
    <value>porfiry@gov.org</value>
</util:list>


5,<util:map/>
替代了之前适用<map><entry key=""><value></value></entry></map>的配置方式,让多个bean调用同一map成为可能!

老的用法
<bean id="emails" class="org.springframework.beans.factory.config.MapFactoryBean">
<property name="sourceMap">
      <map>
        <entry key="pechorin" value="pechorin@hero.org"/>
        <entry key="raskolnikov" value="raskolnikov@slums.org"/>
        <entry key="stavrogin" value="stavrogin@gov.org"/>
        <entry key="porfiry" value="porfiry@gov.org"/>
      </list>
</property>
</bean>


新的用法
<util:map id="emails" map-class="java.util.TreeMap">
    <entry key="pechorin" value="pechorin@hero.org"/>
    <entry key="raskolnikov" value="raskolnikov@slums.org"/>
    <entry key="stavrogin" value="stavrogin@gov.org"/>
    <entry key="porfiry" value="porfiry@gov.org"/>
</util:map>



6,<util:set/>
替代了之前适用<set><value></value></set>的配置方式,
让多个bean调用同一set成为可能!

老的用法
<bean id="emails" class="org.springframework.beans.factory.config.SetFactoryBean">
<property name="sourceSet">
      <set>
        <value>pechorin@hero.org</value>
        <value>raskolnikov@slums.org</value>
        <value>stavrogin@gov.org</value>
        <value>porfiry@gov.org</value>
      </set>
</property>
</bean>



新的用法
<util:set id="emails" set-class="java.util.TreeSet">
    <value>pechorin@hero.org</value>
    <value>raskolnikov@slums.org</value>
    <value>stavrogin@gov.org</value>
    <value>porfiry@gov.org</value>
</util:set>


7,<jee:jndi-lookup/>
替代了之前使用JndiObjectFactoryBean指定配制获取容器JNDI资源的FactoryBean!

老的用法
<bean id="simple" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="jdbc/MyDataSource"/>
    <property name="cache" value="true"/>
    <property name="resourceRef" value="true"/>
    <property name="lookupOnStartup" value="false"/>
    <property name="expectedType" value="com.myapp.DefaultFoo"/>
    <property name="proxyInterface" value="com.myapp.Foo"/>
</bean>


新用法
<jee:jndi-lookup id="simple"
             jndi-name="jdbc/MyDataSource"
             cache="true"
             resource-ref="true"
             lookup-on-startup="false"
             expected-type="com.myapp.DefaultFoo"
             proxy-interface="com.myapp.Foo"/>


8,<jee:local-slsb/>
替代了之前使用LocalStatelessSessionProxyFactoryBean来获取无状态会话BEAN的FactoryBean!

老的用法
<bean id="complexRemoteEjb"
      class="org.springframework.ejb.access.LocalStatelessSessionProxyFactoryBean">
<property name="jndiName" value="ejb/MyRemoteBean"/>
<property name="businessInterface" value="com.foo.service.RentalService"/>
<property name="cacheHome" value="true"/>
<property name="lookupHomeOnStartup" value="true"/>
<property name="resourceRef" value="true"/>
<property name="homeInterface" value="com.foo.service.RentalService"/>
<property name="refreshHomeOnConnectFailure" value="true"/>
</bean>


新的用法
<jee:remote-slsb id="complexRemoteEjb"
    jndi-name="ejb/MyRemoteBean"
    business-interface="com.foo.service.RentalService"
    cache-home="true"
    lookup-home-on-startup="true"
    resource-ref="true"
    home-interface="com.foo.service.RentalService"
    refresh-home-on-connect-failure="true">


Spring2.0在配置上调整了不少地方,增加更加灵活、简洁的配置方式,本文通过两个简单的示例来演示。
配置Apache的一个数据源连接池,在Spring 2.0以前的版本中,我们可以使用类似下面的配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>org.gjt.mm.mysql.Driver</value></property>
<property name="url">
<value>jdbc:mysql://127.0.0.1:3306/easyjf-bbs</value> </property>
<property name="username"><value>root</value> </property>
<property name="password"><value>mypass</value></property>
</bean>
</beans>

在Spring2.0中,可以把<value>及<ref>两个标签作为其父级<bean>标签的一个属性来定义,这样使得配置文件更加简洁,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName"
value="org.gjt.mm.mysql.Driver" />
<property name="url"
value="jdbc:mysql://127.0.0.1:3306/easyjf-bbs" />
<property name="username" value="root" />
<property name="password" value="mypass" />
</bean>
</beans>

另外,Spring2.0中还有一个非常实用的解析器,SimplePropertyNamespaceHandle,若配置文件中引http://www.springframework.org/schema/p命令空间,则将会使用SimplePropertyNamespaceHandle来处理这个Bean的定义,可以在Spring2.0中的Bean中以更简单的方式配置设值方法注入,如下所示:
<?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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"
p:driverClassName="org.gjt.mm.mysql.Driver"
p:url="jdbc:mysql://127.0.0.1:3306/easyjf-bbs" p:username="root" p:password="mysql" />
</beans>

在上面的配置中,使用p:url则可以直接注入BasicDataSource的url属性值,可以使用p:url-ref属性来引用另外一个Bean。
如,Spring2.0以前的一个DAO配置:
<bean id="userDao" class="com.easyjf.bbs.dbo.springjdbc.UserDaoSpringJdbc">
<property name="dataSource"><ref bean="dataSource"/></property>
</bean>
使用简短属性方式,则改成如下:
<bean id="userDao" class="com.easyjf.bbs.dbo.springjdbc.UserDaoSpringJdbc" p:dataSource-ref="dataSource" />

Spring2.0比以前的版本配置更加灵活、简洁,如果手工书写配置,则比较实用。当然,老的配置方式有很多开发工具如MyEclipse等都能识别,不需要我们动手一点一点的录入配置文件,大多数工具对新的配置方式还不能识别,因此,请根据实际情况酌情使用。

分享到:
评论

相关推荐

    spring2.0完整开发包

    在Spring 2.0中,DI通过XML配置文件和注解两种方式进行,注解方式的引入使得代码更加简洁,减少了XML配置的工作量。 其次,Spring的AOP(面向切面编程)允许开发者定义“切面”,即关注点的模块化,如日志、事务...

    Spring2.0技术手册高清完整版

    《Spring2.0技术手册高清完整版》是针对Spring框架2.0版本的一份详尽指南,由知名作者精心编撰。这份手册以其高清、完整的特性,为读者提供了全面了解和掌握Spring 2.0所需的知识。尽管内容为繁体,但不影响其深入浅...

    spring2.0学习笔记+spring定时任务

    标题 "spring2.0学习笔记+spring定时任务" 暗示了我们即将探讨的是关于Spring框架2.0版本的学习心得以及如何在Spring中配置和使用定时任务。在这个主题下,我们将深入理解Spring的核心概念,特别是它在企业级Java...

    spring2.0framework.doc

    Spring 2.0 允许开发人员创建自定义标签,构建领域特定语言(DSL),从而在 XML 配置中提供更高的抽象级别。这种可扩展性使得第三方库能够提供与 Spring 配合使用的定制配置,降低了集成成本。 2.3. 面向切面编程...

    spring2.0技术手册.PDF

    Spring应用中可以利用事件发布-订阅模型来解耦组件之间的交互。通过使用ApplicationEvent类和ApplicationListener接口,可以实现事件的发布和监听。Spring的事件机制不仅支持同步事件传播,还可以配置异步事件处理。...

    Spring2.0的配置2

    在Spring 2.0中,XML配置是配置Spring beans的主要方式,虽然在后续版本中引入了Java配置和注解配置等更简洁的方式,但在当时XML配置仍然是核心。以下是一些关于Spring 2.0 XML配置的实用技巧,旨在提高配置文件的...

    spring2.0技术手册中文版

    根据提供的信息,我们可以总结出关于《spring2.0技术手册中文版》的相关知识点,主要聚焦于Spring框架的基础、特点以及其在Java应用开发中的角色。 ### 标题:spring2.0技术手册中文版 #### 知识点一:Spring框架...

    Spring 2.0 中文用户指南.rar

    这份中文用户指南详细介绍了Spring 2.0的核心概念、配置方式以及如何在实际开发中应用。以下是一些主要的知识点: 1. **依赖注入(Dependency Injection, DI)**:Spring 2.0的一大核心特性是依赖注入,它允许开发者...

    struts2.0+spring2.0+hibernate3.1 web应用

    ### Struts2.0 + Spring2.0 + Hibernate3.1 Web 应用知识点解析 #### 一、项目概述 本项目是一个基于Struts2.0、Spring2.0及Hibernate3.1的Web应用程序。它不仅实现了基本的CRUD(创建、读取、更新、删除)操作,...

    learning spring boot 2.0

    Spring Boot是一种基于Java的开源框架,旨在简化新Spring应用的初始搭建以及开发过程。它使用了“约定优于配置”的原则,提供了一种快速上手的方法,使得开发者可以更专注于业务逻辑的开发而不需要花费太多时间在...

    spring2.0 Quartz 执行每天定时任务 普通普是执行任务

    标题中的“spring2.0 Quartz 执行每天定时任务 普通普是执行任务”涉及到的是在Spring 2.0框架中使用Quartz库来创建并执行每天定时任务的场景。Quartz是一款强大的开源作业调度框架,它可以用来按计划执行各种任务,...

    Spring2.0中文教程

    综上所述,Spring2.0是一个功能强大且灵活的Java平台框架,它不仅包含了核心的依赖注入和面向切面编程功能,还提供了广泛的数据访问支持和Web应用开发支持。通过学习Spring2.0,开发者可以更好地理解和掌握现代Java...

    Spring 2.0集成Struts 2.0

    总的来说,Spring 2.0与Struts 2.0的集成使得应用开发更加高效、可维护,降低了系统的复杂度。开发者可以通过Spring的IoC和DI特性更好地管理组件,通过Struts 2的Action、OGNL、值堆栈等特性优化用户界面和业务逻辑...

    基于Spring2.0的Collection配置使用例子

    在Spring配置文件(如`beans.xml`)中,你可以使用`&lt;list&gt;`、`&lt;set&gt;`、`&lt;map&gt;`和`&lt;props&gt;`标签来声明这些集合。每个标签都有自己的特定用途: 1. `&lt;list&gt;`:用于创建ArrayList实例,其内部元素可以是其他Bean或简单...

    spring2.0中文参考手册.pdf

    - **概览**:Spring 2.0是Spring框架的一个重要版本,它提供了全面的轻量级企业级应用程序解决方案。该版本进一步优化了原有功能,并引入了一系列新特性,以满足更广泛的开发需求。 - **使用场景**: - **控制反转...

    Spring 2.0 JSTL demo

    在"Spring 2.0 JSTL demo"中,我们探讨的是如何将这两个强大的技术结合使用,以提升Web应用程序的开发效率和可维护性。JSTL能够帮助我们从繁琐的脚本代码中解脱出来,专注于业务逻辑,而Spring 2.0则通过管理对象的...

    Spring2.0学习笔记

    了解这些基本概念后,你就可以开始构建Spring2.0的应用了,无论是配置文件的编写、对象的注入,还是事务的管理,都能得心应手。同时,Spring2.0的灵活性允许你根据需求定制各种策略,以适应不同规模和复杂性的项目。

    Spring+2.0+技术手册

    3. **Spring 2.0 与 Hibernate 整合**:介绍如何在 Spring 应用程序中整合 Hibernate,实现对象关系映射(ORM),并进行数据库操作。 4. **Spring 2.0 的单元测试和集成测试实践**:学习如何利用 Spring 提供的测试...

Global site tag (gtag.js) - Google Analytics