Spring事務(wù)annotation原理詳解
這篇文章主要介紹了Spring事務(wù)annotation原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
在使用Spring的時(shí)候,配置文件中我們經(jīng)常看到 annotation-driven 這樣的注解,其含義就是支持注解,一般根據(jù)前綴 tx、mvc 等也能很直白的理解出來(lái)分別的作用。
<tx:annotation-driven/> 就是支持事務(wù)注解的(@Transactional) 。
<mvc:annotation-driven> 就是支持mvc注解(Controller中可以使用MVC的各種注解)。
<tx:annotation-driven/> 會(huì)有一個(gè)屬性來(lái)指定使用哪個(gè)事務(wù)管理器,如:
<tx:annotation-driven transaction-manager="txManager" />//txManager就是指定的事務(wù)管理器
這樣逐層引用下去,所以我們使用@Transactionl 注解可以控制事務(wù)就通俗易懂了。
另外要提一下的就是 Spring 是使用 aop 通過(guò) asm 操作Java字節(jié)碼的方式來(lái)實(shí)現(xiàn)對(duì)方法的前后事務(wù)管理的。
那我們是否就可以在程序中所有被spring管理的類上都可以使用@Transactional注解了呢,在Service上可以使用@Transactional 注解這個(gè)是肯定的了,那總有些人也想弄明白能否在Controller 使用?答案顯然是“不一定”的(與時(shí)間配置有關(guān)),下面做下解釋:
在 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/>只會(huì)查找和它在相同的應(yīng)用上下文件中定義的bean上面的@Transactional注解,如果你把它放在Dispatcher的應(yīng)用上下文中,它只檢查控制器(Controller)上的@Transactional注解,而不是你services上的@Transactional注解。
所以,可以確定的是我們是可以在Controller上使用事務(wù)注解的,但是我們不推薦這樣做,這里只是為了說(shuō)明spring對(duì)<tx:annotation-driven/>的使用。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Spring實(shí)戰(zhàn)之使用注解實(shí)現(xiàn)聲明式事務(wù)操作示例
- Spring事務(wù)傳播行為問題解決
- Spring事務(wù)管理原理及方法詳解
- Spring如何在一個(gè)事務(wù)中開啟另一個(gè)事務(wù)
- SpringBoot內(nèi)部調(diào)用事務(wù)不起作用問題的解決方案
- SpringBoot+Dubbo+Seata分布式事務(wù)實(shí)戰(zhàn)詳解
- Spring編程式和聲明式事務(wù)實(shí)例講解小結(jié)
- springboot中事務(wù)管理@Transactional的注意事項(xiàng)與使用場(chǎng)景
- 詳解Spring Boot微服務(wù)如何集成fescar解決分布式事務(wù)問題
相關(guān)文章
vue?vxe-table?實(shí)現(xiàn)財(cái)務(wù)記賬憑證的方案
使用?vxe-table?實(shí)現(xiàn)財(cái)務(wù)記賬憑證非常簡(jiǎn)單,實(shí)現(xiàn)在線實(shí)時(shí)編輯的記賬憑證、自動(dòng)合計(jì)金額等,這篇文章主要介紹了vue?vxe-table?實(shí)現(xiàn)財(cái)務(wù)記賬憑證的方案,需要的朋友可以參考下2024-12-12
mybatis3.4.6 批量更新 foreach 遍歷map 的正確姿勢(shì)詳解
這篇文章主要介紹了mybatis3.4.6 批量更新 foreach 遍歷map 的正確姿勢(shì)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
Mybatis-plus?代碼生成器?AutoGenerator?的簡(jiǎn)介和使用詳解
AutoGenerator是MyBatis-Plus的代碼生成器,通過(guò)AutoGenerator可以快速生成?Entity、Mapper、Mapper XML、Service、Controller等各個(gè)模塊的代碼,極大的提升了開發(fā)效率,這篇文章主要介紹了Mybatis-plus代碼生成器AutoGenerator的簡(jiǎn)介和使用,需要的朋友可以參考下2023-05-05
Java中String判斷值為null或空及地址是否相等的問題
這篇文章主要介紹了Java中String判斷值為null或空及地址是否相等的問題,文中舉了簡(jiǎn)單的例子對(duì)字符串類型的值和地址問題進(jìn)行講解,需要的朋友可以參考下2016-01-01
Java獲取Prometheus監(jiān)控?cái)?shù)據(jù)的方法實(shí)現(xiàn)
本文主要介紹了Java獲取Prometheus監(jiān)控?cái)?shù)據(jù)的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12
解決 IDEA 創(chuàng)建 Gradle 項(xiàng)目沒有src目錄問題
這篇文章主要介紹了解決 IDEA 創(chuàng)建 Gradle 項(xiàng)目沒有src目錄問題,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06

