`
mayEyeInfo
  • 浏览: 5079 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring mvc下的事务管理 不起作用

阅读更多

最近公司要搞一个框架,把这活落在了我的身上,正好那段时间在研究Spring mvc,感觉其注解式Controller比较强大,就准备开发一个Spring mvc框架,但是在测试Spring的事务管理时,发现其不起作用,后来搞了将近一个星期,终于弄好了,不过一部分还是不是很明白,希望有大神帮我解决我的疑问:

1,tx:advice的解析类是哪个?

2,最终开启事物以及关闭事物的操作事物类是不是TransactionInterceptor?

现在把我解决问题的过程写一下。本人小菜,仅希望留下痕迹。

开始我配置Spring事物的配置文件是这样的;

<tx:advice id="txAdvice"  transaction-manager="txManager">
    	<tx:attributes>
    		<tx:method name="save*" propagation="REQUIRED"/>
    		<tx:method name="add*" propagation="REQUIRED"/>
    		<tx:method name="create*" propagation="REQUIRED"/>
    		<tx:method name="insert*" propagation="REQUIRED"/>
    		<tx:method name="update*" propagation="NEVER"/>
    		<tx:method name="merge*" propagation="REQUIRED"/>
    		<tx:method name="remove*" propagation="REQUIRED"/>
    		<tx:method name="put*" propagation="REQUIRED" />
    		<tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
    		<tx:method name="del*" propagation="REQUIRED"/>
    		<tx:method name="count*" propagation="SUPPORTS" read-only="true"/>
    		<tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
    		<tx:method name="load*" propagation="SUPPORTS" read-only="true"/>
    		<tx:method name="query*" propagation="SUPPORTS" read-only="true"/>
    		<tx:method name="list*" propagation="SUPPORTS" read-only="true"/>
    		<tx:method name="*" propagation="SUPPORTS" read-only="true" />
    	</tx:attributes>
    </tx:advice>
    <aop:config>
    	<aop:pointcut expression="execution(* com.project..*Service.*(..))" id="txPointcut"/>
    	<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
    </aop:config>
 

拦截所有的以Service结尾的接口方法,且web.xml中是这样配置的,以下是其中一部分。

<context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>
       WEB-INF/conf/applicationProperties.xml,
       WEB-INF/conf/applicationDataSource.xml,
       WEB-INF/conf/applicationTransaction.xml,
       WEB-INF/conf/applicationSecurity.xml,
       WEB-INF/conf/applicationService.xml
       </param-value>
    </context-param>

.........................
<!-- spring mvc 配置-->
	<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!--
			spring 配置文件,名称的路径都可以配置,如果不配置此项则自动扫描/WEB-INF/
			springmvc-servlet.xml,此文件名规则为servlet名-servlet.xml
		-->
		<init-param>
			<param-name>namespace</param-name>
			<param-value>conf/springmvc-servlet</param-value>
			<!--
				加载多个配置文件 
			-->
		</init-param>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/conf/applicationContext.xml</param-value>
		</init-param>
		<!--servlet加载方式,启动容器时加载-->
		<load-on-startup>1</load-on-startup>
	</servlet>
 

此时发现根本就没办法拦截service中的方法,在service中插入数据错误是,也不能回滚。我在TransactionInterceptor中设置断点,也无法进入。

通过查找资料,个人初步判断如下:

Spring事物管理只会在当前同一个ApplicationContext中拦截事物,如果其上下文不在同一个ApplicationContext中的话,事物不能拦截到。由于我配置在<context-param>事物拦截,而想在<servlet>中拦截事物,导致其ApplicationContext不是同一个,所以拦截不到。

分享到:
评论

相关推荐

    Spring MVC jar包

    - **AOP集成**:Spring MVC与Spring的面向切面编程(AOP)无缝集成,可以方便地实现事务管理和其他切面功能。 2. **Hibernate 3.6.8**: - **ORM框架**:Hibernate是一个强大的ORM工具,它将Java对象映射到数据库...

    spring mvc+hibernate实现事务管理(配置文件版)

    本项目是关于如何使用Spring MVC与Hibernate结合来实现事务管理的实践教程,通过MyEclipse自动生成所需的包和配置文件。这里将详细讲解这一过程,以及涉及到的关键知识点。 首先,Spring MVC作为Spring框架的一部分...

    最全最经典spring-mvc教程

    另外,Spring MVC与Spring框架的其他组件无缝集成,如Spring AOP(面向切面编程)用于实现日志、事务管理等功能,Spring JDBC和MyBatis等持久层框架用于数据库操作,以及Spring Data JPA、Hibernate等ORM工具,使得...

    spring mvc jar包

    以上这些库构成了 Spring MVC 开发的基础环境,开发者可以利用它们来创建控制器、定义模型、配置视图解析器,以及实现事务管理、数据访问等复杂功能。通过 Spring MVC,开发者能够以声明式的方式组织应用程序,提高...

    spring mvc框架依赖全面jar

    在Spring MVC中,AOP常用于日志记录、事务管理等横切关注点,它可以将这些功能以声明式的方式与业务代码分离。 `ojdbc14.jar` 是Oracle数据库的驱动包,如果你的应用需要连接Oracle数据库,这个jar是必不可少的。 ...

    maven与spring MVC

    【标题】"maven与spring MVC"涉及到的是Java Web开发中的两个关键组件——Maven和Spring MVC,它们在构建和管理复杂项目时起着至关重要的作用。Maven是一个项目管理和综合工具,它通过提供一个标准化的构建过程和...

    Spring MVC + Mybatis+Spring实现的个人博客系统

    在本项目中,Spring作为容器管理了所有bean的生命周期,包括Spring MVC的控制器、Mybatis的SqlSessionFactory等,同时提供了事务管理功能。 **4. 数据库设计** 博客系统的数据库通常会包含用户表、博客文章表、评论...

    spring、 spring mvc、 mybatis 开发的java客户关系管理系统,前端采用easyui编写.zip

    《基于Spring、Spring MVC、MyBatis的Java客户关系管理系统详解》 在现代企业运营中,客户关系管理(CRM)系统扮演着至关重要的角色,它帮助企业有效地管理与客户的交互,提高销售效率,优化客户服务,从而增强企业...

    spring+spring mvc+mybatis框架整合实现超市货物管理系统

    在本文中,我们将深入探讨如何使用JavaEE技术栈,特别是Spring、Spring MVC和MyBatis框架,来构建一个超市货物管理系统的实现。这个系统涵盖了基本的登录功能以及与MySQL数据库的交互,包括增删改查操作和分页显示。...

    基于Spring + Spring MVC + MyBatis的图书馆管理系统

    《构建基于Spring + Spring MVC + MyBatis的图书馆管理系统》 图书馆管理系统是信息化时代图书馆管理的重要工具,它能够高效地实现图书的查询、管理、编辑,以及读者的管理和服务。本系统采用Java语言,结合Spring...

    spring mvc+spring+hibernate+bootstrap+mysql 考勤及薪酬管理系统

    Spring框架则在整个系统中起到粘合剂的作用,提供了依赖注入(DI)和面向切面编程(AOP)等核心功能。依赖注入使得对象之间的关系在运行时动态绑定,增强了代码的灵活性和可测试性;而AOP则用于实现如事务管理这样的...

    Spring MVC+ Spring+ Mybatis 框架搭建

    它与Spring框架集成良好,可以使用Spring的事务管理进行控制。 **SSM框架整合** 整合SSM框架,首先需要在项目中引入这三大框架的依赖库。然后,配置Spring的ApplicationContext.xml,定义Bean,包括DataSource、...

    spring MVC_快速入门

    Spring MVC提供了MockMvc工具,可以在不启动服务器的情况下进行单元测试和集成测试。 这个“spring MVC_快速入门”文档可能涵盖了以上部分或全部内容,旨在帮助初学者快速理解Spring MVC的工作原理和基本用法。...

    spring mvc+ibats实例

    在本实例中,iBatis可能是通过XML配置文件或注解方式与Spring MVC集成,实现数据访问层的事务管理和依赖注入。 3. Maven: Maven是Java项目管理工具,用于构建、依赖管理和项目信息管理。`pom.xml`文件是Maven的...

    spring 与 spring mvc 整合 配置讨论

    AOP则提供了在不修改源代码的情况下,对程序进行功能增强的能力,如日志、事务管理等。 Spring MVC是基于Spring框架构建的MVC(Model-View-Controller)模式实现,它将应用程序逻辑、数据和用户界面分离,使得开发...

    spring mvc mysql hibernate

    标题中的“Spring MVC”,“Hibernate”和“MySQL”都是Java Web开发中不可或缺的重要技术组件,它们共同构建了一个高效、灵活的后端应用架构。 Spring MVC是Spring框架的一部分,专门用于构建Web应用程序。它是一...

    spring mvc + spring + hibernate 全注解整合开发视频教程 11

    Spring框架则是一个全面的企业级应用开发平台,它不仅包含Spring MVC,还提供了依赖注入(DI)、AOP(面向切面编程)、事务管理、JDBC抽象、缓存、任务调度等多个核心功能。在全注解开发中,我们可以使用@Autowired...

    综合spring mvc + spring + hibernate + bootstrap开发图书管理系统

    在本项目中,我们利用了Java技术栈中的四个核心组件:Spring MVC、Spring、Hibernate以及Bootstrap,构建了一个全面的图书管理系统。这个系统旨在提供高效、用户友好的图书管理功能,涵盖了从图书入库、检索到借阅、...

    Spring mvc整合mybatis例子

    - 利用Spring的AOP实现事务管理,确保数据一致性。 - 使用MyBatis的动态SQL功能,使SQL更易于维护和调整。 综上所述,整合Spring MVC和MyBatis涉及了Web应用的多个层面,从配置到业务逻辑,都需要细心设计和实现...

Global site tag (gtag.js) - Google Analytics