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

Spring中Transactional注解使用的心得(推薦)

 更新時間:2022年10月21日 08:34:26   作者:pzistart  
這篇文章主要介紹了Spring中Transactional注解使用的心得,事務(wù)是用來控制數(shù)據(jù)的ACID特性的,用于保證數(shù)據(jù)的正確性和完整性,需要的朋友可以參考下

事務(wù)特性

@Transactional注解是用于事務(wù)控制的,需要知道事務(wù)的ACID特征:即原子性(Atomicity,或稱不可分割性)、一致性(Consistency)、隔離性(Isolation,又稱獨立性)、持久性(Durability)。

事務(wù)是用來控制數(shù)據(jù)的ACID特性的,用于保證數(shù)據(jù)的正確性和完整性。

@Transactional注解有兩種使用方式:

(1)標注在類上面:當(dāng)作用于類上時,該類的所有public方法將都具有該類型的事務(wù)屬性,同時,我們也可以在方法級別使用該標注來覆蓋類級別的定義。

(2)標注在方法上面:當(dāng)作用于方法上時,只有當(dāng)該方法發(fā)生了異常才會進行回滾,其他的方法不受影響。

在項目中使用,@Transactional(rollbackFor=Exception.class),如果類加了這個注解,那么這個類里面的方法拋出異常,就會回滾,數(shù)據(jù)庫里面的數(shù)據(jù)也會回滾。在@Transactional注解中如果不配置rollbackFor屬性,那么事物只會在遇到RuntimeException的時候才會回滾,加上rollbackFor=Exception.class,可以讓事物在遇到非運行時異常時也回滾。

今天看黑馬redis的課,里面講到了一個事務(wù)注解不生效的問題。

究其原因,就在于Spring中事務(wù)注解生效的條件。那么接下來就說一下自己的心得。

  • 查了一下資料,就是說如果想讓@Transactional注解生效,那么就只有當(dāng)被代理類對象調(diào)用它的事務(wù)方法時,事務(wù)注解才會起作用。
  • 那如何才能創(chuàng)建代理對象呢,這個Spring也幫我們做好了。
  • 只要使用注入bean的方式(也就是依賴注入的方式)去創(chuàng)建bean對象,該bean對象調(diào)用被@T注解了的方法,那么就會走代理類,從而@T注解就起作用了。

以下說一下例子吧

public class VoucherOrderServiceImpl implements IVoucherOrderService
    @Override
    public Result seckillVocher(Long voucherId) {
	IVoucherOrderService o = (IVoucherOrderService) AopContext.currentProxy();
        return o.secKill(voucherId);
	}


    @Override
    @Transactional
    public Result secKill(Long voucherId) {
	
	}
}
  • 在一個方法中調(diào)用另一個@T注釋的方法,如果直接this.xxx()去調(diào)用,那么@T不會生效,上面說的原因嘛,沒有走動態(tài)代理類。
  • 那怎么辦呢,我們手動的創(chuàng)建一個代理類對象就能解決改問題。
  • 為什么要生成IVoucherOrderService這個類型的動態(tài)代理類對象呢?
    -- 這樣想:1.我們要去調(diào)用該類的@T方法,肯定要指定成該對象類型。2.換個說法,如果使用注入bean的方式調(diào)用該@T方法,不也是生成這個類型的代理類對象嗎

到此這篇關(guān)于Spring中Transactional注解使用的心得的文章就介紹到這了,更多相關(guān)Spring Transactional注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot集成Thymeleaf的方法

    Spring Boot集成Thymeleaf的方法

    這篇文章主要介紹了Spring Boot集成Thymeleaf的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Java實現(xiàn)ftp文件上傳下載解決慢中文亂碼多個文件下載等問題

    Java實現(xiàn)ftp文件上傳下載解決慢中文亂碼多個文件下載等問題

    這篇文章主要介紹了Java實現(xiàn)ftp文件上傳下載解決慢中文亂碼多個文件下載等問題的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-10-10
  • Java實現(xiàn)簡單的模板渲染

    Java實現(xiàn)簡單的模板渲染

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡單的模板渲染的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 本真的REST架構(gòu)風(fēng)格理解

    本真的REST架構(gòu)風(fēng)格理解

    這篇文章主要為大家介紹了本真的REST架構(gòu)風(fēng)格的深入理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • Mybatis對mapper的加載流程深入講解

    Mybatis對mapper的加載流程深入講解

    這篇文章主要給大家介紹了關(guān)于Mybatis對mapper的加載流程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • SpringBoot開啟異步調(diào)用方法

    SpringBoot開啟異步調(diào)用方法

    這篇文章主要為大家詳細介紹了SpringBoot開啟異步調(diào)用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Java中命令行參數(shù)--與-D的區(qū)別

    Java中命令行參數(shù)--與-D的區(qū)別

    本文主要介紹了Java中命令行參數(shù)--與-D的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • java巧用@Convert實現(xiàn)表字段自動轉(zhuǎn)entity

    java巧用@Convert實現(xiàn)表字段自動轉(zhuǎn)entity

    本文主要介紹了java巧用@Convert實現(xiàn)表字段自動轉(zhuǎn)entity,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • springboot實現(xiàn)多模塊項目添加一新模塊

    springboot實現(xiàn)多模塊項目添加一新模塊

    這篇文章主要介紹了springboot實現(xiàn)多模塊項目添加一新模塊,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • java封裝類型與基礎(chǔ)類型對比示例分析

    java封裝類型與基礎(chǔ)類型對比示例分析

    這篇文章主要為大家介紹了java封裝類型與基礎(chǔ)類型對比示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11

最新評論