SSM架构下@Transactional事务无效 日志信息:Closing non transactional SqlSession

简介: 本文目录1. 背景2. 原因3. 分析

1. 背景

基于SSM架构的项目,在服务层方法添加了@Transactional注解,applicationContext开启了注解:


<!-- 事物管理器 -->

   <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

    <property name="dataSource" ref="dataSource" />

   </bean>

   <!-- 事务注解驱动,标注@Transactional的类和方法将具有事务性 -->  

<tx:annotation-driven transaction-manager="transactionManager" />  


案例说在服务层添加了@Transactional注解的方法应该具备事务的原子性,结果无效,查看日志发现有:


Closing non transactional SqlSession

1

这个也提示事务没有起作用。


2. 原因

幸好有SVN,发现之前做了一个修改,就是把对服务层的扫描配置从applicationContext.xml移到了spring-mvc.xml。


<!--该配置原来在applicationContext.xml 作用是自动扫描com.easy.service包下的类 并作为bean加载到容器-->

<context:component-scan base-package="com.easy.service" />


将这句配置移回applicationContext.xml,事务果然生效。


3. 分析

仔细想了下,SSM架构下,Spring是一个容器,通过applicationContext.xml配置,SpringMVC算子容器,通过spring-mvc.xml配置。


子容器可以访问父容器中的bean,但是父容器不能访问子容器的bean,就跟继承关系似的。


所以父容器中定义的事务管理bean就不知道子容器中扫描的com.easy.service包下的类情况了。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
20天前
|
缓存 监控 数据格式
信息系统架构模型(2) SOA
信息系统架构模型(2) SOA
21 0
|
1月前
|
Kubernetes Perl 容器
K8s查看集群 状态事件描述以及Pod日志信息
K8s查看集群 状态事件描述以及Pod日志信息
53 3
|
2月前
|
运维 Linux Apache
LAMP架构调优(一)——隐藏Apache版本信息
LAMP架构调优(一)——隐藏Apache版本信息
21 1
|
7天前
|
存储 监控 数据库
neo4j如何查看日志信息
【5月更文挑战第2天】neo4j如何查看日志信息
28 2
|
20天前
|
前端开发 Java PHP
信息系统架构模型(1) MVC
信息系统架构模型(1) MVC
22 0
|
2月前
|
存储 Java 应用服务中间件
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
61 0
|
2月前
|
存储 SQL 关系型数据库
[MySQL]事务原理之redo log,undo log
[MySQL]事务原理之redo log,undo log
127 0
|
2月前
|
Web App开发 监控 应用服务中间件
全新架构!日志服务 SLS 自研免登录方案发布
全新架构!日志服务 SLS 自研免登录方案发布
87527 7
|
2月前
|
SQL 缓存 关系型数据库
MySQL的万字总结(缓存,索引,Explain,事务,redo日志等)
MySQL的万字总结(缓存,索引,Explain,事务,redo日志等)
70 0
|
2月前
|
SQL 存储 数据管理
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
36 1