Spring+Mybatis @Transactional注解事务不生效

@Transactional声明式事务配置:

  <bean id="transactionManager"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource" />
  </bean>

  <!-- 声明式事务配置 -->
  <tx:annotation-driven transaction-manager="transactionManager" />

----------------------------------------------------------------分割线---------------------------------------------------------------------------------------------------------------------------------

添加以上配置后,在类上声明了@Transactional(如下图),但是在action层中调用MenuHeadInsMapServiceImpl类的方法A,发现方法A并没有进入事务。

解决办法:

1.在spring的配置文件applicationContext.xml中,扫描包时排除Controller:

  <context:component-scan base-package="com.cg.*.*">

    <context:exclude-filter type="annotation"  expression="org.springframework.stereotype.Controller" />
  </context:component-scan>

2.在springMVC配置文件servlet.xml中,扫描包时排除Service: 

  <context:component-scan base-package="com.cg.*.*">
  <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
  </context:component-scan>

主要是参考了这篇文章:http://blog.csdn.net/z69183787/article/details/37819627

时间: 2024-07-30 10:09:19

Spring+Mybatis @Transactional注解事务不生效的相关文章

struts2的Action中使用spring的@Transactional注解事务出错

1.在Struts2使用的是spring管理对象. 使用spring的注解式事务配置, 在action的方法中直接使用事务遇到的问题. public class testAction extends BaseAction{ @Transactional public String test1() throws Exception { dosomething(); } public String test2() throws Exception { dosomething(); } } 只要在上例

SSM框架中使用Spring的@Transactional注解进行事务管理

一 介绍 在企业级应用中,保护数据的完整性是非常重要的一件事.因此不管应用的性能是多么的高.界面是多么的好看,如果在转账的过程中出现了意外导致用户的账号金额发生错误,那么这样的应用程序也是不可接受的 数据库的事务管理可以有效地保护数据的完整性(PS:关于数据库的事务管理基础可以参考我以前写过的这篇文章:http://www.zifangsky.cn/385.html),但是原生态的事务操作需要写不少的代码,无疑是非常麻烦的.在使用了Spring框架的应用中,我们可以使用@Transactiona

spring的@Transactional注解详细用法

概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性.Spring Framework对事务管理提供了一致的抽象,其特点如下: 为不同的事务API提供一致的编程模型,比如JTA(Java Transaction API), JDBC, Hibernate, JPA(Java Persistence API和JDO(Java Data Objects) 支持声明式事务管理,特别是基于注解的声明式事务管理,简单易用 提供比其他事务API如JTA更简单的编程式事务管理

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

一.概览 Atomikos是一个公司名字,旗下最著名的莫过于其Atomikos的事务管理器产品.产品分两个:一个是开源的TransactionEssentials,一个是商业的ExtremeTransactions. TransactionEssentials的主要特征: JTA/XA 事务管理 -- 提供事务管理和连接池 不需要应用服务器 -- TransactionEssentials可以在任何Java EE应用服务器中运行,也就是不依赖于任何应用服务器 开源 -- TransactionE

spring的@Transactional注解

spring支持[编程式事务管理]和[声明式事务管理]两种方式. 声明式事务 声明式事务管理建立在AOP之上的.其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务. 声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中. 事务传播行为 所谓事务的传播行为是指

springMVC,spring,mybatis全注解搭建框架--第一步,让框架跑起来

自己从事java开发工作也有一年多了,自己却没有亲手搭建一个完整的框架.于是今天自己动手搭建一个,过程中遇到一些问题,倒腾了大半天终于搞定了. 现在给大家分享一下过程,自己也记录下来,以后学习参考使用. 我采用全注解的方式去搭建springMVC,spring,mybatis框架,同时自己也可以去配置xml,但是主要还是通过注解的方式来实现.参考的网上其它大神分享的方法,多多少少有些地方写的不清楚,也并不是完全通过注解去实现的. springboot可以真正说是零配置吧,后面我将给大家演示spr

玩转SSH(五):Struts + Spring + MyBatis(注解版)

本文将在 玩转SSH(四):Struts + Spring + MyBatis 的基础上进行一些小的改动,将原本是 xml 配置方式的项目,改成注解的配置方式. 要将项目改成注解方式,一般是将在 Spring 中创建的对象通过注解的方式直接写在类中.下面我们看看如何进行配置. 一.修改 applicationContext.xml 文件 将原来的bean声明全部删除: <bean id="..." class="..."> <property ..

Spring+MyBatis纯注解零XML整合(4)

不得不说,利用XML作为配置文件是一个非常好的想法,它可以轻松地实现配置集中化,而且修改之后无需再次编译.然而,由于大多数情况下开发者基本都会拿到程序的源码,加之对于各种XML配置文件一般情况下也只有开发者会去动,可以说XML在一定程度上也相当于程序代码,只是不用编译而已.因此很多人并不是很喜欢XML这种东西.早在Spring 2.5之前就有很多人对满天飞的XML配置叫苦不迭.从Spring 3开始,Java config开始出现,这一特性使得Spring能够摆脱XML配置文件.但是大多数人仍然

关于Spring+mybatis使用@Transactional注解事物没有生效的问题

控制台日志信息: was not registered for synchronization because synchronization is not active JDBC Connection. Closing non transactional SqlSession [[email protected]19e35973] 出现以上信息说明spring的事物被覆盖掉了,通常是因为在spring.xml中扫描了一次@service注解后,springmvc.xml又重新扫描@servic