[转]Spring事务tx:annotation-driven/
在使用SpringMVC的时候,配置文件中我们经常看到 annotation-driven 这样的注解,其含义就是支持注解,一般根据前缀 tx、mvc 等也能很直白的理解出来分别的作用。<tx:annotation-driven/> 就是支持事务注解的(@Transactional) 、<mvc:annotation-driven> 就是支持mvc注解的,说白了就是使Controller中可以使用MVC的各种注解。
首先,<tx:annotation-driven/> 会有一个属性来指定使用哪个事务管理器,如:<tx:annotation-driven transaction-manager="transactionManager" />。然后事务管理器 transactionManager 会引用 dataSource (如果我们使用JPA或hibernate,也需要指定一个 entityManagerFactory),dataSouce 肯定就是直接对数据库的了。
这样逐层引用下去,所以我们使用@Transactionl 注解可以控制事务就通俗易懂了。另外要提一下的就是Spring是使用AOP通过asm操作Java字节码的方式来实现对方法的前后事务管理的。
说到这里,已经有了对 <tx:annotation-driven/> 的简单理解,那我们是否就可以在程序中所有被spring管理的类上都可以使用@Transactional注解了呢,在Service上可以使用@Transactional 注解这个是肯定的了,那总有些人也想弄明白能否在Controller 使用?答案显然是“不一定”的(与应用上下文配置有关),下面做下解释:
在 spring-framework-reference.pdf 文档上有这样一段话:
<tx:annotation-driven/> only looks for @Transactional on beans in the same application context it is defined in. This means that, if you put <tx:annotation-driven/> in a WebApplicationContext for a DispatcherServlet, it only checks for @Transactional beans in your controllers, and not your services.
意思就是:<tx:annoation-driven/>只会查找和它在相同的应用上下文件中定义的bean上面的@Transactional注解,如果你把它放在Dispatcher的应用上下文中,它只检查控制器(Controller)上的@Transactional注解,而不是你services上的@Transactional注解。
所以,可以确定的是我们是可以在Controller上使用事务注解的,但是我们不推荐这样做(本人也从来没有这样做过),这里只是为了说明spring对<tx:annotation-driven/>的使用。
转载于:https://www.cnblogs.com/atai/p/6868642.html
[转]Spring事务tx:annotation-driven/相关推荐
- 关于Spring事务tx:annotation-driven/的理解(Controller可以使用@Transactional)
在使用SpringMvc的时候,配置文件中我们经常看到 annotation-driven 这样的注解,其含义就是支持注解,一般根据前缀 tx.mvc 等也能很直白的理解出来分别的作用.<tx: ...
- Spring 事务源码(2)—<tx:annotation-driven/>事务标签源码解析
基于最新Spring 5.x,详细介绍了Spring 事务源码,包括< tx:annotation-driven/>标签源码解析. 此前我们已经学习了Spring的<tx:a ...
- Spring事务管理-》Spring事务管理(annotation)
5.6 使用@Transactional 除了使用XML类型的事务管理,同时Spring也提供了Annotation类型的事务管理.如下所示: 一:Spring事务管理 =============== ...
- Spring→事务、隔离级别、事务传播行为、编程式事务控制、XML配置声明式事务(原始方式)、XML配置声明式事务(基于tx/aop)、@注解配置声明式事务、优势总结
事务 Spring事务管理 不考虑隔离引发问题 隔离级别 事务传播行为 演示环境搭建 编程式事务控制 XML配置声明式事务(原始方式) XML配置声明式事务(基于tx/aop) @注解配置声明式事务 ...
- Spring事务管理 与 SpringAOP
1,Spring事务的核心接口 Spring事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务,下面通过讲解Spring的事务接口来了解Spring实现事务的具体策略. ...
- Spring事务配置探究
2019独角兽企业重金招聘Python工程师标准>>> 一.项目中spring+mybaits xml配置解析 一般我们会在datasource.xml中进行如下配置,但是其中每个配 ...
- 【面试】我是如何在面试别人Spring事务时“套路”对方的
作者:李新杰,来自:编程新说 "中国最好面试官" 自从上次写了一篇"[面试]我是如何面试别人List相关知识的,深度有点长文"的文章后,有读者专门加我微信,说我 ...
- SSH深度历险(六) 深入浅出----- Spring事务配置的五种方式
这对时间在学习SSH中Spring架构,Spring的事务配置做了具体总结.在此之间对Spring的事务配置仅仅是停留在听说的阶段,总结一下.总体把控.通过这次的学习发觉Spring的事务配置仅仅要把 ...
- Spring 事务管理高级应用难点剖析
Spring 事务管理高级应用难点剖析: 第 1 部分 http://www.ibm.com/developerworks/cn/java/j-lo-spring-ts1/index.html htt ...
最新文章
- 基于ARM Cortex-M的SoC存储体系结构和实战
- pytorch实现连续切片,类似于tf.strided_slice()
- C#中Ref和out的使用区别
- scss怎么引入到html,Sass 导入指令
- qr码生成_从Java程序生成QR码图像
- F-Secure Client Security 注册机
- MySQL 排序、分页查询、聚合查询
- 10a 16a 插座区别_电动汽车小知识(NO·5):电动汽车能否用家里的插座进行充电?...
- Window+Java环境证书生成说明,pfx证书已经生成
- 分享 | 开源的中文语音识别系统
- 路由器常见问题及解决办法
- C# 实现自定义的USB设备与上位机进行通信(上位机部分)
- SQL文件示例(Mysql)
- 一起寻找哪些免费小巧的 CAD文件查看和格式转换软件
- 安国主控au6983、au698x fc8708 量产失败修复过程。载入韧体数据失败\坏磁区过多\读坏块表错误...
- libtorrent源码分析(三)BT下载相关知识总结
- Python实现Excel表格数据去重
- 土木工程计算机设计考试科目一模拟试题,科目一电脑模拟考试,原来这么简单,看完这个科一不用愁!...
- Python Flask 学习笔记 —— 二(路由,视图函数,jinjia2语法)
- Python机器学习个人总结
热门文章
- 【2019牛客暑期多校训练营(第二场) - D】Kth Minimum Clique(bfs,tricks)
- 【2050 Programming Competition - 2050 一万人码 】非官方部分题解(HDU)
- 【Kattis - triangle 】Sierpiński Circumference(数学,求位数,取对数或Java)
- 函授本科统考计算机考试时间,函授2006级计算机、机电本科第一学期考试时间安排.doc...
- csm和uefi_关于CSM和UEFI你要知道的一些事
- java中jframe不存在怎么办,java – 设置JFrame背景,为什么这不起作用?
- h5 网站滚动到某个位置
- 对数函数定义域和值域为r_对数函数
- java屏蔽编译告警_java-禁止JAXB生成的类上的编译器警告
- go语言快速刷《程序员面试金典》(1)