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

Spring事務(wù)中的事務(wù)傳播行為使用方式詳解

 更新時(shí)間:2023年06月27日 08:26:46   作者:Cosolar  
Spring框架作為一個(gè)輕量級(jí)的開(kāi)源框架,在企業(yè)應(yīng)用開(kāi)發(fā)中被廣泛使用,在Spring事務(wù)管理中,事務(wù)傳播行為是非常重要的一部分,它定義了方法如何參與到已經(jīng)存在的事務(wù)中或者如何開(kāi)啟新的事務(wù),本文將詳細(xì)介紹Spring事務(wù)中的幾種事務(wù)傳播行為,詳細(xì)講解具體使用方法

1. REQUIRED 傳播行為

REQUIRED是Spring事務(wù)管理的默認(rèn)傳播行為。如果當(dāng)前沒(méi)有事務(wù),則新的事務(wù)將被開(kāi)啟;如果當(dāng)前存在事務(wù),則方法將參與到當(dāng)前事務(wù)中。下面是REQUIRED傳播行為的使用方式:

@Service
@Transactional
public class UserServiceImpl implements UserService{
    @Autowired
    private UserDao userDao;
    @Override
    public void updateUser(User user) {
        // 具體業(yè)務(wù)邏輯
    }
    @Override
    @Transactional(propagation = Propagation.REQUIRED)
    public void transferMoney(int fromUserId, int toUserId, double amount) {
        User fromUser = userDao.getUserById(fromUserId);
        User toUser = userDao.getUserById(toUserId);
        double fromUserBalance = fromUser.getBalance();
        if(fromUserBalance < amount){
            throw new RuntimeException("余額不足");
        }
        fromUser.setBalance(fromUserBalance - amount);
        toUser.setBalance(toUser.getBalance() + amount);
        userDao.updateUser(fromUser);
        userDao.updateUser(toUser);
    }
}

2. REQUIRES_NEW 傳播行為

REQUIRES_NEW表示當(dāng)前方法必須開(kāi)啟新的事務(wù),并掛起當(dāng)前事務(wù)(如果存在)。下面是REQUIRES_NEW傳播行為的使用方式:

@Service
@Transactional
public class OrderServiceImpl implements OrderService{
    @Autowired
    private OrderDao orderDao;
    @Override
    public void createOrder(Order order) {
        // 具體業(yè)務(wù)邏輯
    }
    @Override
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void updateOrderStatus(int orderId, int status) {
        Order order = orderDao.getOrderById(orderId);
        order.setStatus(status);
        orderDao.updateOrder(order);
    }
}

3. SUPPORTS 傳播行為

SUPPORTS表示當(dāng)前方法支持參與到一個(gè)已經(jīng)存在的事務(wù)中,如果當(dāng)前沒(méi)有事務(wù),則以非事務(wù)方式執(zhí)行。下面是SUPPORTS傳播行為的使用方式:

@Service
@Transactional
public class LogServiceImpl implements LogService{
    @Autowired
    private LogDao logDao;
    @Override
    public void addLog(Log log) {
        // 具體業(yè)務(wù)邏輯
    }
    @Override
    @Transactional(propagation = Propagation.SUPPORTS)
    public void deleteLog(int logId) {
        logDao.deleteLog(logId);
    }
}

4. NOT_SUPPORTED 傳播行為

NOT_SUPPORTED表示當(dāng)前方法以非事務(wù)方式執(zhí)行,如果當(dāng)前存在事務(wù),則掛起該事務(wù)。下面是NOT_SUPPORTED傳播行為的使用方式:

@Service
@Transactional
public class ProductService{
    @Autowired
    private ProductDao productDao;
    @Transactional(propagation = Propagation.NOT_SUPPORTED)
    public void updateProductStock(int productId, int quantity){
        // 具體業(yè)務(wù)邏輯
    }
}

5. NEVER 傳播行為

NEVER表示當(dāng)前方法以非事務(wù)方式執(zhí)行,如果當(dāng)前存在事務(wù),則拋出異常。下面是NEVER傳播行為的使用方式:

@Service
@Transactional
public class OrderServiceImpl implements OrderService{
    @Autowired
    private OrderDao orderDao;
    @Override
    public void createOrder(Order order) {
        // 具體業(yè)務(wù)邏輯
    }
    @Override
    @Transactional(propagation = Propagation.NEVER)
    public void deleteOrder(int orderId) {
        Order order = orderDao.getOrderById(orderId);
        orderDao.deleteOrder(order);
    }
}

Spring事務(wù)管理中的事務(wù)傳播行為對(duì)于設(shè)計(jì)和管理復(fù)雜的事務(wù)場(chǎng)景非常重要。本文詳細(xì)介紹了幾種常用的事務(wù)傳播行為,并提供了相應(yīng)的代碼示例。開(kāi)發(fā)者可以根據(jù)實(shí)際需求選擇合適的事務(wù)傳播行為,從而實(shí)現(xiàn)事務(wù)的管理與控制。

通過(guò)對(duì)Spring事務(wù)中事務(wù)傳播行為的深入理解,開(kāi)發(fā)者可以更好地設(shè)計(jì)和管理事務(wù),提高應(yīng)用程序的可靠性和穩(wěn)定性。在實(shí)際開(kāi)發(fā)中,根據(jù)業(yè)務(wù)需求合理選擇事務(wù)傳播行為,可以避免事務(wù)覆蓋和事務(wù)的不一致等問(wèn)題,并且提升系統(tǒng)的性能和并發(fā)能力。

以上就是Spring事務(wù)中的事務(wù)傳播行為使用方式詳解的詳細(xì)內(nèi)容,更多關(guān)于Spring事務(wù)傳播行為的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • springboot下mybatis-plus如何打印sql日志和參數(shù)到日志文件

    springboot下mybatis-plus如何打印sql日志和參數(shù)到日志文件

    本文主要介紹了springboot下mybatis-plus如何打印sql日志和參數(shù)到日志文件,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java并發(fā)編程之常用的輔助類詳解

    Java并發(fā)編程之常用的輔助類詳解

    這篇文章主要給大家介紹了關(guān)于Java并發(fā)編程之常用的輔助類的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 淺析Java如何優(yōu)雅的設(shè)計(jì)接口狀態(tài)碼和異常

    淺析Java如何優(yōu)雅的設(shè)計(jì)接口狀態(tài)碼和異常

    HTTP協(xié)議里定義了一系列的狀態(tài)碼用來(lái)表明請(qǐng)求的狀態(tài),如常用的200表示請(qǐng)求正常,404表示請(qǐng)求的資源不存在,所以本文就來(lái)和大家討論一下如何優(yōu)雅的設(shè)計(jì)接口狀態(tài)碼和異常,感興趣的可以了解下
    2024-03-03
  • Java中如何用Stream分組并求各組數(shù)量

    Java中如何用Stream分組并求各組數(shù)量

    這篇文章主要給大家介紹了關(guān)于Java中如何用Stream分組并求各組數(shù)量的相關(guān)資料,文中通過(guò)實(shí)例代碼,對(duì)大家學(xué)習(xí)或者Java具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Springboot整合Rabbitmq之Confirm和Return機(jī)制

    Springboot整合Rabbitmq之Confirm和Return機(jī)制

    這篇文章主要介紹了Springboot整合Rabbitmq之Confirm和Return詳解,本篇重點(diǎn)進(jìn)行Confirm?機(jī)制和Return?機(jī)制的實(shí)現(xiàn)和說(shuō)明,通過(guò)實(shí)例代碼相結(jié)合給大家詳細(xì)介紹,對(duì)Springboot整合Rabbitmq相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-02-02
  • java枚舉使用詳細(xì)介紹及實(shí)現(xiàn)

    java枚舉使用詳細(xì)介紹及實(shí)現(xiàn)

    這篇文章主要介紹了java枚舉使用詳細(xì)介紹及實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Java面試題沖刺第十五天--設(shè)計(jì)模式

    Java面試題沖刺第十五天--設(shè)計(jì)模式

    這篇文章主要為大家分享了最有價(jià)值的三道關(guān)于設(shè)計(jì)模式的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java中的字符編碼問(wèn)題處理心得總結(jié)

    Java中的字符編碼問(wèn)題處理心得總結(jié)

    Java中的String類默認(rèn)是Unicode編碼,大家平常所說(shuō)的UTF-8就是使用最廣的一種unicode的實(shí)現(xiàn)方式,以下我們還是來(lái)看一下Java中的字符編碼問(wèn)題處理心得總結(jié):
    2016-06-06
  • ConditionalOnProperty配置swagger不生效問(wèn)題及解決

    ConditionalOnProperty配置swagger不生效問(wèn)題及解決

    這篇文章主要介紹了ConditionalOnProperty配置swagger不生效問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 一文詳解Spring任務(wù)執(zhí)行和調(diào)度(小結(jié))

    一文詳解Spring任務(wù)執(zhí)行和調(diào)度(小結(jié))

    這篇文章主要介紹了一文詳解Spring任務(wù)執(zhí)行和調(diào)度(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評(píng)論