`
jsczxy2
  • 浏览: 1275748 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

spring 1.2与spring 2.0中事务配置区别

阅读更多

 

本文章比较了Spring自己带的例子:JPetStore ,通过配置文件详细讲解了,Spring1.2.8与2.0如何实现声明式事务管理。


Spring1.2.8 

Spring以前对一个事务拦截要通过代理实现下面的配置文件是从不同的文件中找来的,不是单独的一个Spring配置文件。


 <!-- Transaction manager for a single JDBC DataSource -->
 <!-- 声明一个事务管理器 -->
 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource"/>
 </bean>


 <!-- 声明一个抽象Bean,这个Bean是不能实例化的,提供给其它需要AOP事务的Bean用,其它需要AOP事务的只要继承这个Bean就会被AOP接管-->
 <bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
    abstract="true">
  <property name="transactionManager" ref="transactionManager"/>
  <property name="transactionAttributes">
   <props>
    <prop key="insert*">PROPAGATION_REQUIRED</prop>
    <prop key="update*">PROPAGATION_REQUIRED</prop>
    <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
   </props>
  </property>
 </bean>

 <!-- 继承之前实现的抽象Bean,让这个Bean通过代理工厂生成,交给AOP托管。至于哪些方法被接管在控制Bean中已经配置了-->
 <bean id="petStore" parent="baseTransactionProxy">
  <property name="target">
   <bean class="org.springframework.samples.jpetstore.domain.logic.PetStoreImpl">
    <property name="accountDao" ref="accountDao"/>
    <property name="categoryDao" ref="categoryDao"/>
    <property name="productDao" ref="productDao"/>
    <property name="itemDao" ref="itemDao"/>
    <property name="orderDao" ref="orderDao"/>
   </bean>
  </property>
 </bean>


最早发表于 http://www.openj.cn

Spring2.0 

 下面的配置与上面的配置完全对应

 <!--这一个Bean的配置与之前完全一样,没有变化---->
 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource"/>
 </bean>

 <!--这一处与之前有了变化,在1.2.8版本中,此处的Bean被声明为由一个FactoryBean生成,而此处只是一个普通的Bean,要简单许多,透明性要好很多---->
 <bean id="petStore" class="org.springframework.samples.jpetstore.domain.logic.PetStoreImpl">
  <property name="accountDao" ref="accountDao"/>
  <property name="categoryDao" ref="categoryDao"/>
  <property name="productDao" ref="productDao"/>
  <property name="itemDao" ref="itemDao"/>
  <property name="orderDao" ref="orderDao"/>
 </bean>


 <!---下面的两处配置,才是整个事务AOP的核心,在1.2.8版本中,通过FactoryBean把事务对象(dataSource),与需要进行事务控制的对象PetStoreImpl串起来,对PetStoreImpl有侵入性----->
 <!---而在之前的两处配置中,事务对象(dataSource)与,需要进行事务控制的对象PetStoreImpl没有什么关系,它们的关系全部体现在下面的两处配置中----->
 
 
 <!---pointcut属性定义了哪此点需要去拦截,此处的配置的意思是所有的PetStoreFacade接口中的方法都要拦截,而拦截之后要如何处理则由advice-ref指定的Bean处理----->
 <!---配置文件中各个属性的含义参考:http://www.redsaga.com/spring_ref/2.0/html/aop.html#aop-schema ----->

 <aop:config>
  <aop:advisor pointcut="execution(* *..PetStoreFacade.*(..))" advice-ref="txAdvice"/> 
 </aop:config>


 
 <!--下面的transaction-manager属性原配置中没有,如果缺少此配置,默认值就是“transactionManager”在此加上,让人看的更明白。-->
 <!-- 参考 http://blog.xmnow.cn/doc/cn/spring2.0-reference_final_zh_cn/ch09s05.html --->
 <tx:advice id="txAdvice"  transaction-manager="transactionManager">
  <tx:attributes>
	<tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
	<tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
      <tx:method name="*" propagation="REQUIRED"/>
  </tx:attributes>
 </tx:advice>
分享到:
评论

相关推荐

    struts1.2+spring2.0 登录 例子

    SS_test文件夹中的内容可能包含了相关的源代码、配置文件、数据库脚本等,这些都可用于了解和学习如何在实际项目中集成Struts1.2和Spring2.0,并实现登录功能。通过分析这些文件,开发者可以更深入地理解两个框架的...

    Struts1.2+Spring2.0+Ibatis2.0整合小项目

    **声明式事务** 是Spring2.0的一大特色,通过在配置文件中声明事务规则,可以避免在业务代码中手动管理事务。这种方式简化了事务处理,提高了代码的可读性,同时也更易于维护和扩展。 **SSI (Server Side Includes)...

    struts1.2+spring2.0整合

    整合这两者的主要目的是将Struts1.2的业务逻辑处理和视图展现与Spring2.0的DI和事务管理结合起来,以实现更灵活、可维护性更强的代码结构。下面我们将详细探讨整合过程中的关键步骤和相关知识点: 1. **配置Struts...

    struts1.2+spring2.0+hibernate3.1jar包

    Struts1.2、Spring2.0和Hibernate3.1是经典的Java企业级开发框架组合,它们在2000年代中期至后期广泛应用于构建基于Java的Web应用程序。这个组合通常被称为“SSH”三位一体,各自负责不同的职责: 1. **Struts1.2**...

    struct1.2+ hibernate3.0+spring2.0 例子

    在IT行业中,`Struts1.2`、`Hibernate3.0` 和 `Spring2.0` 是三个非常重要的框架,它们分别代表了MVC(Model-View-Controller)架构、对象关系映射(ORM)以及依赖注入和企业级应用框架的基石。这个压缩包文件的标题...

    struts1.2+spring2.0+hibernate3.2整合源码

    Struts1.2、Spring2.0和Hibernate3.2是经典的Java企业级开发框架组合,被称为SSH框架。这个整合源码提供了这三个组件的集成示例,确保了兼容性和无jar包冲突,使得开发者可以快速地搭建和运行一个完整的Java Web项目...

    struts1.2+spring2.0+hibernate3.2 整合源码

    1、struts1.2+spring 2.0+hibernate3.2 2、struts的动作交由spring来管理,hibernate的配置集中在spring中配置。 3、增加了声明式事务处理,加强了hibernateTemplate的简单事务处理。 4、完整的Myeclipse的工程文件...

    Struts1.2+Spring2.0+Hibernate3搭建框架例子

    1. **环境准备**:确保已安装JDK,设置好环境变量,然后下载并配置Struts1.2、Spring2.0和Hibernate3的库文件到项目的类路径中。 2. **创建项目结构**:按照MVC设计模式,划分模型、视图和控制器目录,如src/main/...

    struts1.2+spring2.0+hibernate3.1集成开发详解

    本篇文章将通过图文并茂的方式详细介绍如何在MyEclipse环境下,利用Struts 1.2、Spring 2.0 和 Hibernate 3.1 来构建一个查询Oracle数据库中雇员信息的应用,并探讨Hibernate中延迟加载机制的使用方法。 #### 2. 软...

    struts1.2+spring2.0+ibatis2.3简单新闻发布

    Struts1.2、Spring2.0 和 iBATIS2.3 是早期广泛使用的Java Web开发框架组合,它们各自承担着不同的职责,共同构建了一个功能完善的新闻发布系统。在这个系统中,Struts作为表现层框架,负责处理用户请求并展现响应;...

    struts1.2+spring2.0+hibernate3.1实例

    Struts1.2、Spring2.0和Hibernate3.1是经典的Java企业级开发框架组合,被称为SSH(Struts-Spring-Hibernate)集成框架。这个小实例为学习者提供了使用这三个框架协同工作的基础示例,有助于理解它们如何在实际项目中...

    JSF1.2+JPA2.0+Spring3.1整合开发

    **整合JSF 1.2、JPA 2.0与Spring 3.1** 整合这三个技术的关键在于它们之间的协调工作。首先,Spring作为整个应用的容器,管理JSF和JPA组件的生命周期。通过Spring的Bean定义,可以配置JSF Managed Beans和JPA实体,...

    struts1.2 + spring2.0 + hibernate3.2整合

    SSH整合是Java开发中一种常见的技术栈组合,它包含了Struts1.2、Spring2.0和Hibernate3.2这三大框架。这三个组件协同工作,为开发者提供了强大的模型-视图-控制器(MVC)架构支持,实现了业务逻辑与表现层的解耦,...

    spring2.0源码 struts1.2源码

    Spring 2.0 和 Struts 1.2 都是为了解决Java Web开发中的复杂性问题,但Spring更注重于后端的控制和组件管理,而Struts则专注于前端的请求处理和视图展示。在实际项目中,二者可以结合使用,例如,Spring作为业务...

    Hibernate3.3.1+Spring2.5.5+Struts2 2.0.1.2例子

    这个"SSH3.3.1+Spring2.5.5+Struts2 2.0.1.2例子"的压缩包可能包含了示例项目的源代码、配置文件以及相关的说明文档,可以帮助开发者理解如何在实际项目中整合这三个框架,提升开发效率。通过学习和研究这个例子,你...

    struts1.2+batis+spring2.0+oracle10g集成例子

    Struts1.2、Batis、Spring2.0和Oracle10g是经典的Java企业级应用框架和技术组合,常用于构建高效、可扩展的Web应用程序。这个集成例子旨在展示如何将这些组件协同工作,实现MVC(Model-View-Controller)架构、数据...

    spring2.0声明式事务

    ### Spring 2.0 声明式事务配置详解 #### 一、Spring 2.0 声明式事务概述 随着 Spring 框架的发展,从 Spring 1.x 到 Spring 2.0 版本,声明式事务管理方式有了显著改进。在 Spring 1.x 中,主要通过 AOP 方式实现...

    struts1.2+spring2.0+hibernate3.1框架所需jar包

    在这个“struts1.2+spring2.0+hibernate3.1框架所需jar包”压缩包中,包含了这三个框架的核心库和其他必要的依赖,以便于开发者在项目中集成和使用。 **Struts 1.2** 是一个基于MVC设计模式的Java Web框架,它使得...

    JSF1.2+Spring2.0+Hibernate3.2的一个登陆实例

    标题“JSF1.2+Spring2.0+Hibernate3.2的一个登陆实例”涉及到的是一个集成使用JavaServer Faces(JSF)、Spring框架和Hibernate ORM的登录应用示例。这个项目可能是一个教学资源或者开发者用来学习如何在旧版本的...

Global site tag (gtag.js) - Google Analytics