`

spring+springMVC,声明式事务失效,原因以及解决办法

阅读更多

一.声明式事务配置:

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
 
  1.   

 

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
 
  1. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  2.     <property name="dataSource" ref="dataSource" />  
  3. </bean>  
  4.    <tx:advice id="txAdvice" transaction-manager="transactionManager">  
  5.    <tx:attributes>  
  6.          <tx:method name="add*" propagation="REQUIRED" read-only="false"/>  
  7.          <tx:method name="del*" propagation="REQUIRED" read-only="false"/>  
  8.          <tx:method name="get*" propagation="REQUIRED" read-only="true"/>  
  9.          <tx:method name="mod*" propagation="REQUIRED" read-only="false" />            
  10.    </tx:attributes>  
  11.    </tx:advice>  
  12.    <aop:config>     
  13.     <aop:pointcut id="serviceMethods" expression="execution(public * com.lexing.platform.service.*.*(..))" />  
  14.     <aop:advisor  advice-ref="txAdvice" pointcut-ref="serviceMethods"/>  
  15.    </aop:config>  


二.声明式事务失效,原因

 

 

根本原因:由子容器扫描装配了@Service 注解的实例。

spring的context是父子容器,由ServletContextListener 加载spring配置文件产生的是父容器,springMVC加载配置文件产生的是子容器,子容器对Controller进行扫描装配时装配了@Service注解的实例 (@Controller 实例依赖@Service实例),而该实例理应由父容器进行初始化以保证事务的增强处理,所以此时得到的将是原样的Service(没有经过事务加强处理,故而没有事务处理能力。

三.解决办法

1.spring配置文件applicationContext中:

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
 
  1. <!-- 不扫描带有@Controller注解的类 ,让 springMVC 子容器加载。  
[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
 
  1. <context:component-scan base-package="com.lexing.platform">     
  2.     <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>     
  3. </context:component-scan>    

 

 

2.springMVC配置文件 servlet-context.xml中

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
 
  1. <!-- 将 带有 @Service注解的类,交由spring 父容器实例化,[ @Service实例依赖@Repository实例,故spring父容器也会装配<span style="font-family: Arial, Helvetica, sans-serif;">@Repository 实例</span><span style="font-family: Arial, Helvetica, sans-serif;">]</span>  
[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
 
  1. <context:component-scan base-package="com.lexing.platform">     
  2.     <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>     
  3. </context:component-scan>     
  4. 本文来源于:http://blog.csdn.net/z69183787/article/details/37819627
分享到:
评论

相关推荐

    Java基于Spring+SpringMVC+MyBatis实现的学生信息管理系统源码.zip

    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后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统...

    基于Spring+SpringMVC+Mybatis架构的博客系统.zip

    基于Spring+SpringMVC+Mybatis架构的博客系统:博客管理、图表数据、日志分析、访问记录、图库管理、资源管理、友链通知等。良好的页面预加载,无限滚动加载,文章置顶,博主推荐等。提供 用户端+管理端 的整套系统...

    基于SSM(Spring+SpringMVC+Mybatis)的新闻管理系统源码+数据库.zip

    基于SSM(Spring+SpringMVC+Mybatis)的新闻管理系统源码+数据库.zip 基于SSM(Spring+SpringMVC+Mybatis)的新闻管理系统源码+数据库.zip 基于SSM(Spring+SpringMVC+Mybatis)的新闻管理系统源码+数据库.zip 基于SSM...

    Spring+SpringMVC+Mybatis资源课件

    标题 "Spring+SpringMVC+Mybatis资源课件" 提供了一个学习路径,涉及Java开发中的三个关键组件:Spring框架、SpringMVC和Mybatis。这些技术是构建现代企业级Web应用程序的基础,尤其是在Java世界中。 Spring框架是...

    Spring+SpringMVC+Hibernate框架集成详解

    Spring+SpringMVC+Hibernate 框架集成详解 本文档旨在详细介绍 Spring、SpringMVC 和 Hibernate 框架的集成,旨在帮助开发人员快速了解这三个框架的集成过程。 Spring 框架 Spring 框架是一个 Java 语言的开源...

    基于Spring+SpringMVC+Mybaits的小区停车场车牌识别系统.zip

    基于Spring+SpringMVC+Mybaits的小区停车场车牌识别系统 基于Spring+SpringMVC+Mybaits的小区停车场车牌识别系统 基于Spring+SpringMVC+Mybaits的小区停车场车牌识别系统 基于Spring+SpringMVC+Mybaits的小区停车场...

    idea工具创建的Spring+SpringMVC+Hibernate+maven项目

    标题中的"idea工具创建的Spring+SpringMVC+Hibernate+maven项目"指的是使用IntelliJ IDEA这个集成开发环境(IDE)构建的一个Java Web项目,该项目整合了四个关键的技术框架:Spring、SpringMVC、Hibernate以及Maven...

    酒店管理系统源码(spring+springmvc+mybatis).zip

    酒店管理系统源码(spring+springmvc+mybatis) 酒店管理系统源码(spring+springmvc+mybatis) 酒店管理系统源码(spring+springmvc+mybatis) 酒店管理系统源码(spring+springmvc+mybatis) 酒店管理系统...

    Spring+SpringMVC+Mybatis框架整合例子(SSM) 下载

    Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...

    基于SpringBoot+Spring+SpringMvc+Mybatis+Shiro+Redis 开发单点登录管理系统源码

    基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + ...

    Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven实现的通用权限管理系统

    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(Spring+springmvc+mybatis)项目实例.zip"压缩包中,包含了一个实际的SSM项目和相关的SQL文件,这将有助于我们深入理解SSM框架的工作原理和应用。 首先,Spring框架是整个SSM中的核心,它负责管理对象...

    spring+springmvc+mybatis

    《Spring+SpringMVC+MyBatis:三位一体的Java企业级开发框架》 在Java企业级应用开发领域,Spring、SpringMVC和MyBatis是三个不可或缺的重要组件,它们共同构建了一个强大的、灵活的和可扩展的应用框架。这篇文章将...

    dubbo+zookeeper+spring+springMVC+mybatis

    【标题】"dubbo+zookeeper+spring+springMVC+mybatis" 描述了一个基于这些技术构建的服务消费方与服务提供方的项目架构。在这个架构中,`Dubbo`是核心的服务框架,它负责服务的注册与发现;`Zookeeper`作为注册中心...

    spring+springmvc+mybatis完整包

    总的来说,“spring+springmvc+mybatis完整包”为Java Web开发者提供了一套成熟的解决方案,可以帮助他们快速构建、测试和部署基于JDK 1.7或更低版本的应用程序。这个包的使用不仅降低了开发难度,还提升了项目的可...

    spring+springMVC+mybatis+quartz动态定时任务创建

    总结来说,"spring+springMVC+mybatis+quartz动态定时任务创建"这个技术栈利用Spring的全面性、Spring MVC的Web处理能力、MyBatis的数据访问效率以及Quartz的定时任务管理,构建出一个能够灵活应对各种定时需求的...

    使用intellij idea搭建MAVEN+SSM(Spring+SpringMVC+MyBatis

    【标题】:“使用IntelliJ IDEA搭建MAVEN+SSM(Spring+SpringMVC+MyBatis)项目” 【正文】 在Java开发领域,Spring、SpringMVC和MyBatis框架的组合,简称SSM,是构建Web应用程序的常用技术栈。IntelliJ IDEA作为...

    Spring+SpringMVC+Mybatis+Maven+bootstrap+ajax+jQuery整合开发简单的员工后台管理系统

    在本项目中,"Spring+SpringMVC+Mybatis+Maven+bootstrap+ajax+jQuery整合开发简单的员工后台管理系统",我们看到一个基于Java技术栈的Web应用开发实例。这个系统利用了多个核心技术来构建一个功能完备的员工管理...

Global site tag (gtag.js) - Google Analytics