Spring事务<tx:annotation-driven/>的作用是什么

这篇文章主要介绍“Spring事务的作用是什么”,在日常操作中,相信很多人在Spring事务的作用是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring事务的作用是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

四子王ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!

在使用SpringMvc的时候,配置文件中我们经常看到 annotation-driven 这样的注解,其含义就是支持注解,一般根据前缀 tx、mvc 等也能很直白的理解出来分别的作用。tx:annotation-driven/ 就是支持事务注解的(@Transactional) 、mvc:annotation-driven 就是支持mvc注解的,说白了就是使Controller中可以使用MVC的各种注解。

首先,  会有一个属性来指定使用哪个事务管理器,如:。然后事务管理器 transactionManager 会引用 dataSource (如果我们使用JPA或Hibernate,也需要指定一个 entityManagerFactory ),dataSouce 肯定就是直接对数据库的了。

这样逐层引用下去,所以我们使用@Transactionl 注解可以控制事务就通俗易懂了。另外要提一下的就是 spring 是使用 aop 通过 asm 操作java字节码的方式来实现对方法的前后事务管理的。

说到这里,已经有了对  的简单理解,那我们是否就可以在程序中所有被spring管理的类上都可以使用@Transactional注解了呢,在Service上可以使用[@Transactional](https://my.oschina.net/u/3770144) 注解这个是肯定的了,那总有些人也想弄明白能否在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对的使用。

一般的配置方法是让Spring管理除了Controller注解以外注解,而让SpringMVC单纯管理Controller注解。 也就是说Spring有一个配置文件,里面配置成扫描非Controller的bean,SpringMVC有一个配置文件,里面只扫描Controller。 这样就形成了两个上下文,即Spring的上下文和SpringMVC的上下文,他们分别管理着不同的俩堆bean。

这个时候你在Spring的配置文件里加了一句tx:annoation-driven,其实是告诉Spring,你管理的这些bean里面有可能会出现需要事务支持的。 然后在Spring管理范围的某个bean上加了个注解@transactional,其实是用来帮助Spring识别这个bean是需要事务管理的。

同样你在Spring的配置文件里加了tx:annoation-driven,SpringMVC是不关心的,他只关心你给他配置了什么以及他管理的bean上有什么注解

链接

https://www.cnblogs.com/darknebula/p/9963859.html

到此,关于“Spring事务的作用是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


分享标题:Spring事务<tx:annotation-driven/>的作用是什么
当前URL:http://scyanting.com/article/ihicpe.html