`

关于spring事务配置的说明(转)

阅读更多
事务在系统服务启动的时候就加载了,一般的,我们把事务配在service层,利用service的业务逻辑借口统一的管理。为什么不用在dao层呢?因为一个service有可能调用多个dao,而这多个dao有可能相互联系,有时候一个操作需要调用多次数据库,但是这多次调用要么全提交,要么全回滚。因此,在dao层调用事务理论上说不是一个很明智的选择。应该有业务逻辑层service层负责事务,统一处理。具体事务配置的代码如下:

<!-- Transaction template for Managers -->
    <bean id="txProxyTemplate" abstract="true"
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager" ref="transactionManager"/>
        <property name="transactionAttributes">
            <props>              
              <prop key="update*">PROPAGATION_REQUIRED</prop>
       <prop key="save*">PROPAGATION_REQUIRED</prop>
       <prop key="delete*">PROPAGATION_REQUIRED</prop>
       <prop key="remove*">PROPAGATION_REQUIRED</prop>
       <prop key="add*">PROPAGATION_REQUIRED</prop>
        <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>
    </bean>
其中update*表示service层中的方法以update开头的所有方法,没有readOnly标示的标识该操作可以修改数据库,否则该方法不能操作数据库,只能进行类似查询的功能。最后一个*代表除了以上所有的方法外的其它方法。

    这个调用事务的类是一个抽象类,因此在自己具体实现的类里面如果需要配置事务,只要声明一下就可以了。另外,也可以覆盖该方法,修改属于自己业务模块的方法名的读写数据库的操作权。具体代码如下:
    <bean id="fileManager"  parent="txProxyTemplate">
  <property name="target">
            <bean class="com.mycore.filemanager.service.impl.FileManagerImpl" autowire="byName">
            </bean>
        </property>
        <property name="transactionAttributes">
            <props>                             
              <prop key="*">PROPAGATION_REQUIRED</prop>         
            </props>
        </property>
</bean>

这样就配置ok了,在自己的实现类里面如果企图在不能修改数据库的方法里面修改数据库,spring会报出该方法是只读的一个异常。


分享到:
评论

相关推荐

    详细说明spring事务配置的5种方式

    详细说明spring事务配置的5种方式 让你对spring 有更深入的认识

    spring与mybatis整合实现事务配置

    struts2、spring与mybatis整合 包含简单登录功能 事务配置,运行JunitTestVillageArticle的modify测试。配置说明参考注释

    Spring声明式事务配置管理方法

    可以在spring中对整个项目的事务进行控制

    spring+mybatis+Atomikos JTA事务配置说明

    NULL 博文链接:https://lizhao6210-126-com.iteye.com/blog/1958831

    SpringBean 调用 事务 AOP

    Spring,Bean调用,事务,AOP,配置详细说明 提升开发效率

    spring事务

    spring 五种事务的配置说明 请大家共享

    尚硅谷SpringCloud第2季2020版.mmap

    一篇很好的springCloud学习的思维导读,详细的介绍了,springCloud的搭建步骤以及各组件的说明讲解 涵盖 Eureka服务注册与发现 Zookeeper服务注册与发现 Consul服务注册与发现 Ribbon负载均衡服务调用 OpenFeign...

    spring jar 包详解

    (2) spring-beans.jar 这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI支持,...

    Spring+3.x企业应用开发实战光盘源码(全)

     第9章:介绍了Spring事务管理的工作机制,通过XML、注解等方式进行事务管理配置,同时还讲解了JTA事务配置知识。  第10章:对实际应用中Spring事务管理各种疑难问题进行透彻的剖析,让读者对Spring事务管理不再有...

    Spring+Jotm+Hibernate+Oracle+Junit 实现JTA分布式事务要求Demo工程

    2.Spring+Jotm整合实现JTA分布式事务,应用场景如转账等,同一事务内完成db1用户加100元、db2用户减100元。 3.Spring+Junit4单元测试,优点:不会破坏数据库现场,等等。 (特别注意:Spring3.0里不在提供对jotm的...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. JPA 2.4.3. 异步的JMS 2.4.4. JDBC 2.5. Web层 2.5.1. Spring MVC的表单标签库 2.5.2. Spring MVC合理的默认值 2.5.3. Portlet 框架 2.6. 其他特性 2.6.1. 动态语言...

    spring-boot mybaits spring security redis整合

    主要功能如下: ===== ...&gt;####说明:启动项目前请安装Redis,并启动服务,系统中均使用默认配置。 打war包:(dev、test、prod)指定配置文件 mvn clean package -Dmaven.test.skip=true -P test

    Spring 2.0 开发参考手册

    2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. JPA 2.4.3. 异步的JMS 2.4.4. JDBC 2.5. Web层 2.5.1. Spring MVC的表单标签库 2.5.2. Spring MVC合理的默认值 2.5.3. Portlet 框架 2.6. 其他特性 2.6.1. ...

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

    Spring包依赖说明: 1) spring-core.jar需commons-collections.jar,spring-core.jar是以下其它各个的基本。 2) spring-beans.jar需spring-core.jar,cglib-nodep-2.1_3.jar 3) spring-aop.jar需spring-core.jar,...

    使用Maven Hibernate5 之Spring整合

    在准备整合Spring之前,也在网上看了各种配置。但是楼主心里还是很纠结,为啥一定要配置事务。配事务就陪事务为啥要配拦截,配拦截就配拦截为啥要配自动代理。都是因为楼主是java菜鸟。不然这些肯定是java方面的常识...

    基于Spring Cloud+Vue的班级事务管理系统源码(毕设源码)+项目使用说明.zip

    基于Spring Cloud+Vue的班级事务管理系统源码(毕设源码)+项目使用说明.zip 【系统架构】 项目采用B/S架构,前后端通讯采用RESTful API,数据格式使用Json,认证Token格式采用JWT。 身份认证使用Spring Security ...

    Spring中文帮助文档

    2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. 对Websphere 事务管理的完整支持 2.4.3. JPA 2.4.4. 异步的JMS 2.4.5. JDBC 2.5. Web层 2.5.1. Spring MVC合理的默认值 2.5.2. Portlet 框架 2.5.3. 基于...

    spring chm文档

    2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. JPA 2.4.3. 异步的JMS 2.4.4. JDBC 2.5. Web层 2.5.1. Spring MVC的表单标签库 2.5.2. Spring MVC合理的默认值 2.5.3. Portlet 框架 2.6. 其他特性 2.6.1. ...

Global site tag (gtag.js) - Google Analytics