一.声明式事务配置:
- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="dataSource" />
- </bean>
- <tx:advice id="txAdvice" transaction-manager="transactionManager">
- <tx:attributes>
- <tx:method name="add*" propagation="REQUIRED" read-only="false"/>
- <tx:method name="del*" propagation="REQUIRED" read-only="false"/>
- <tx:method name="get*" propagation="REQUIRED" read-only="true"/>
- <tx:method name="mod*" propagation="REQUIRED" read-only="false" />
- </tx:attributes>
- </tx:advice>
- <aop:config>
- <aop:pointcut id="serviceMethods" expression="execution(public * com.lexing.platform.service.*.*(..))" />
- <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods"/>
- </aop:config>
二.声明式事务失效,原因
根本原因:由子容器扫描装配了@Service 注解的实例。
spring的context是父子容器,由ServletContextListener 加载spring配置文件产生的是父容器,springMVC加载配置文件产生的是子容器,子容器对Controller进行扫描装配时装配了@Service注解的实例 (@Controller 实例依赖@Service实例),而该实例理应由父容器进行初始化以保证事务的增强处理,所以此时得到的将是原样的Service(没有经过事务加强处理,故而没有事务处理能力。
三.解决办法
1.spring配置文件applicationContext中:
- <!-- 不扫描带有@Controller注解的类 ,让 springMVC 子容器加载。
- <context:component-scan base-package="com.lexing.platform">
- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
- </context:component-scan>
2.springMVC配置文件 servlet-context.xml中
- <!-- 将 带有 @Service注解的类,交由spring 父容器实例化,[ @Service实例依赖@Repository实例,故spring父容器也会装配<span style="font-family: Arial, Helvetica, sans-serif;">@Repository 实例</span><span style="font-family: Arial, Helvetica, sans-serif;">]</span>
- <context:component-scan base-package="com.lexing.platform">
- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
- </context:component-scan>
- 本文来源于:http://blog.csdn.net/z69183787/article/details/37819627
相关推荐
Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码,SSM+Vue的学生管理系统。 Java基于Spring+SpringMVC+...
完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统...
基于Spring+SpringMVC+Mybatis架构的博客系统:博客管理、图表数据、日志分析、访问记录、图库管理、资源管理、友链通知等。良好的页面预加载,无限滚动加载,文章置顶,博主推荐等。提供 用户端+管理端 的整套系统...
基于SSM(Spring+SpringMVC+Mybatis)的新闻管理系统源码+数据库.zip 基于SSM(Spring+SpringMVC+Mybatis)的新闻管理系统源码+数据库.zip 基于SSM(Spring+SpringMVC+Mybatis)的新闻管理系统源码+数据库.zip 基于SSM...
标题 "Spring+SpringMVC+Mybatis资源课件" 提供了一个学习路径,涉及Java开发中的三个关键组件:Spring框架、SpringMVC和Mybatis。这些技术是构建现代企业级Web应用程序的基础,尤其是在Java世界中。 Spring框架是...
Spring+SpringMVC+Hibernate 框架集成详解 本文档旨在详细介绍 Spring、SpringMVC 和 Hibernate 框架的集成,旨在帮助开发人员快速了解这三个框架的集成过程。 Spring 框架 Spring 框架是一个 Java 语言的开源...
基于Spring+SpringMVC+Mybaits的小区停车场车牌识别系统 基于Spring+SpringMVC+Mybaits的小区停车场车牌识别系统 基于Spring+SpringMVC+Mybaits的小区停车场车牌识别系统 基于Spring+SpringMVC+Mybaits的小区停车场...
标题中的"idea工具创建的Spring+SpringMVC+Hibernate+maven项目"指的是使用IntelliJ IDEA这个集成开发环境(IDE)构建的一个Java Web项目,该项目整合了四个关键的技术框架:Spring、SpringMVC、Hibernate以及Maven...
酒店管理系统源码(spring+springmvc+mybatis) 酒店管理系统源码(spring+springmvc+mybatis) 酒店管理系统源码(spring+springmvc+mybatis) 酒店管理系统源码(spring+springmvc+mybatis) 酒店管理系统...
Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...
基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + ...
Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统。 Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统 Spring+SpringMVC+...
在这个"SSM(Spring+springmvc+mybatis)项目实例.zip"压缩包中,包含了一个实际的SSM项目和相关的SQL文件,这将有助于我们深入理解SSM框架的工作原理和应用。 首先,Spring框架是整个SSM中的核心,它负责管理对象...
《Spring+SpringMVC+MyBatis:三位一体的Java企业级开发框架》 在Java企业级应用开发领域,Spring、SpringMVC和MyBatis是三个不可或缺的重要组件,它们共同构建了一个强大的、灵活的和可扩展的应用框架。这篇文章将...
【标题】"dubbo+zookeeper+spring+springMVC+mybatis" 描述了一个基于这些技术构建的服务消费方与服务提供方的项目架构。在这个架构中,`Dubbo`是核心的服务框架,它负责服务的注册与发现;`Zookeeper`作为注册中心...
总的来说,“spring+springmvc+mybatis完整包”为Java Web开发者提供了一套成熟的解决方案,可以帮助他们快速构建、测试和部署基于JDK 1.7或更低版本的应用程序。这个包的使用不仅降低了开发难度,还提升了项目的可...
总结来说,"spring+springMVC+mybatis+quartz动态定时任务创建"这个技术栈利用Spring的全面性、Spring MVC的Web处理能力、MyBatis的数据访问效率以及Quartz的定时任务管理,构建出一个能够灵活应对各种定时需求的...
【标题】:“使用IntelliJ IDEA搭建MAVEN+SSM(Spring+SpringMVC+MyBatis)项目” 【正文】 在Java开发领域,Spring、SpringMVC和MyBatis框架的组合,简称SSM,是构建Web应用程序的常用技术栈。IntelliJ IDEA作为...
在本项目中,"Spring+SpringMVC+Mybatis+Maven+bootstrap+ajax+jQuery整合开发简单的员工后台管理系统",我们看到一个基于Java技术栈的Web应用开发实例。这个系统利用了多个核心技术来构建一个功能完备的员工管理...