欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring中的@Transactional的工作原理

 更新時間:2022年06月04日 09:05:04   作者:興濤  
這篇文章主要介紹了Spring中的@Transactional的工作原理,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

1、原理

事務的概念想必大家都很清楚,其ACID特性在開發(fā)過程中占有重要的地位。同時在并發(fā)過程中會出現一些一致性問題,為了解決一致性問題,也出現了四種隔離級別,這里就不再詳述了,感興趣的可以去查一下。下面我們討論一下Spring中的事務。

Spring中的事務有兩種:

  • 編程式事務
  • 聲明式事務

通常情況下我們使用聲明式事務,它是基于SpringAOP實現的?;贏OP實現的事務極大得幫助了我們的開發(fā)效率,其本質是對方法進行前后攔截,在目標方法前加入一個事務,在目標完成后再加入一個事務進行提交或者回滾,這種方式下我們并不需要在目標方法中的代碼中摻雜事務管理代碼,輕松進行事務管理。

而編程式事務就需要我們修改代碼來進行事務管理。這種方法看似很麻煩,但是它的存在自有它的道理,上面我們講到的聲明式事務控制,其控制的細粒度只能作用到方法上,無法在代碼塊中實現聲明式事務控制。我們都知道,一旦加上事務,程序的運行效率就會降低,所以編程式事務也有它的用武之地。

但是我們的廣大勞動人民也是智慧的。直接將需要事務的代碼塊獨立成方法,這樣仍然可以使用聲明式事務。當然在開發(fā)中具體情況要具體分析了。

2、用法

事務的傳播行為: 

 事務的隔離級別

@Transactional屬性

 示例代碼:

@Service
@Transactional(propagation = Propagation.REQUIRED,rollbackFor = Exception.class)
public class RoleServiceImpl implements RoleService {

    @Autowired
    private RoleDao roleDao;

    @Transactional(propagation = Propagation.SUPPORTS,readOnly = true)
    @Override
    public List<Role> findAllRoles() {
        return roleDao.selectAllRoles();
    }
}

3、拓展

1、為什么聲明式事務只能應用于方法上?

  • 因為聲明式事務是基于AOP實現的,AOP是基于動態(tài)代理實現的。
  • 動態(tài)代理只會捕捉來自外部的方法調用,
  • 意思就是類內部的方法調用類內部的另外方法,并不會發(fā)生事務行為。

到此這篇關于Spring中的@Transactional的工作原理的文章就介紹到這了,更多相關Spring @Transactional 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java設計模式七大原則之開閉原則詳解

    Java設計模式七大原則之開閉原則詳解

    開閉原則,又稱為OCP原則,即一個軟件實體如類,模塊和函數應該對擴展開放,對修改關閉。本文將詳細介紹Java設計模式七大原則之一的開閉原則,需要的可以參考一下
    2022-02-02
  • Java中Runnable和Thread的區(qū)別分析

    Java中Runnable和Thread的區(qū)別分析

    在java中可有兩種方式實現多線程,一種是繼承Thread類,一種是實現Runnable接口,下面就拉分別介紹一下這兩種方法的優(yōu)缺點
    2013-03-03
  • Springboot基于enable模塊驅動的實現

    Springboot基于enable模塊驅動的實現

    這篇文章主要介紹了Springboot基于enable模塊驅動的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • JAVA堆排序算法的講解

    JAVA堆排序算法的講解

    這篇文章主要介紹了JAVA堆排序算法的知識點,文中代碼非常詳細,配合上圖片講解,幫助大家更好的參考和學習,感興趣的朋友可以了解下
    2020-06-06
  • Spring Boot中使用JDBC Templet的方法教程

    Spring Boot中使用JDBC Templet的方法教程

    這篇文章主要給大家介紹了關于在Spring Boot中使用JDBC Templet的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-03-03
  • 淺談Java讀寫注冊表的方式Preferences與jRegistry

    淺談Java讀寫注冊表的方式Preferences與jRegistry

    這篇文章主要介紹了淺談Java讀寫注冊表的方式Preferences與jRegistry,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • SpringBoot使用SensitiveWord實現敏感詞過濾

    SpringBoot使用SensitiveWord實現敏感詞過濾

    這篇文章主要為大家詳細介紹了SpringBoot如何使用SensitiveWord實現敏感詞過濾功能,文中示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-01-01
  • Filter在springboot中的使用方法詳解

    Filter在springboot中的使用方法詳解

    這篇文章主要介紹了Filter在springboot中的使用方法詳解,filter(過濾器)作用于在intreceptor(攔截器)之前,不像intreceptor一樣依賴于springmvc框架,只需要依賴于serverlet,需要的朋友可以參考下
    2023-08-08
  • 老生常談設計模式之動態(tài)代理

    老生常談設計模式之動態(tài)代理

    下面小編就為大家?guī)硪黄仙U勗O計模式之動態(tài)代理。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java連接MYSQL數據庫的詳細步驟

    Java連接MYSQL數據庫的詳細步驟

    這篇文章主要為大家介紹了Java連接MYSQL數據庫的詳細步驟,感興趣的小伙伴們可以參考一下
    2016-05-05

最新評論