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

Spring使用注解方式處理事務

 更新時間:2022年08月26日 14:22:20   作者:少年啊!  
這篇文章主要為大家詳細介紹了Spring使用注解方式處理事務,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

Spring有專門的類來處理事務,在這之前我們先要理解Spring處理事務中的幾個概念:

1.接口:

事務管理器是PlatformTransactionManager接口,在接口中定義了事務的主要函數:commit(); 事務提交
rollback();事務回滾

2.事務管理器接口的實現類:

1)DataSourcTransactionManager:使用jdb或者mybatis訪問數據庫時使用的
<bean id=”myDataSource” class=“xx包.DataSourceTransactionManager”>
必須指定數據源
</bean>
2)HibernateTransactionManager:使用Hibernate框架時,使用的實現類
3)事務超時:TIMEOUT,秒為單位,默認是-1,使用數據庫的默認超時時間
超時:指事務的最長執(zhí)行時間,也就是一個函數最長的執(zhí)行時間.當時間到了,函數沒有
執(zhí)行完畢,Spring會回滾該函數的執(zhí)行(回滾事務)

3.事務的傳播行為:事務在函數之間傳遞,函數怎么使用事務。通過傳播行為指定函數怎么使用事務

有7個傳播行為:
事務的傳播行為常量都是以PROPAGATION_開頭,形如:PROPAGATION_XXX
PROPAGATION_REQUIRED 指定的函數必須在事務內執(zhí)行。若當前存在事務,就加入到當前事務中, 若當前沒事務,就創(chuàng)建一個新事務。Spring默認的事務傳播行為
PROPAGATION_REQUIES_NEW 總是新建一個新事務,若當前存在事務,就將當前事務掛起來,直 到新事務執(zhí)行完畢
PROPAGATION_SUPPORTS 指定的函數支持當前事務,但若當前沒事務,也可以使用非事務方式執(zhí) 行
PROPAGATION_MANDATORY
PROPAGATION_NESTED
PROPAGATION_NEVER
PROPAGATION_NOT_SUPPORTED

我們了解了Spring處理事務的一些概念以及一些常用的類,那么現在在Spring中使用事務

項目目錄:

要spring使用事務的注解就需要在application-config.xml(Spring核心配置文件)添加頭部信息:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
? ? ? ?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
? ? ? ?xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
? ? ? ?xsi:schemaLocation="http://www.springframework.org/schema/beans
?http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
?http://www.springframework.org/schema/tx
?http://www.springframework.org/schema/tx/spring-tx-2.0.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

<!--聲明事務管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
? ? <property name="dataSource" ref="myDataSource"/>
</bean>
<!--聲明事務的注解驅動
? transaction-manager:事務管理器對象的id
-->
<tx:annotation-driven transaction-manager="transactionManager"/>

BuyGoodsServiceImpl文件:

/**使用注解來設值事務的屬性(傳播行為,隔離等級,超時,當哪些異常發(fā)生的時候觸發(fā)回滾事務)
?* 注意:該注解必須使用在公有函數上,而且拋出的異常必需繼承RuntimeException
?* */
@Transactional(propagation = Propagation.REQUIRED,
isolation = Isolation.DEFAULT,timeout = 20,
rollbackFor = {NullPointerException.class,NotEnoughException.class})
public void buyGoods(int goodsId, int nums)
? ? ? ? throws NullPointerException, NotEnoughException{
? ? /**生成銷售的訂單
? ? ?* */
? ? Sale sale=new Sale();
? ? sale.setGid(goodsId);
? ? sale.setNum(nums);
? ? saleDao.insertSale(sale);

? ? /**修改庫存
? ? ?* */
? ? Goods goods=goodsDao.selectGoodsById(goodsId);
? ? if(goods==null){
? ? ? ? throw new NullPointerException(goodsId+"沒有該商品");
? ? }
? ? if(goods.getAmount()<nums){
? ? ? ? throw new NotEnoughException(goodsId+"庫存不足");
? ? }

? ? /**操作庫存
? ? ?* */
? ? goods.setAmount(nums);
? ? goodsDao.updateGoods(goods);
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 利用Java編寫一個屬于自己的日歷

    利用Java編寫一個屬于自己的日歷

    這篇文章主要為大家介紹了如何利用Java編寫一個屬于自己的日歷,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起嘗試一下
    2022-05-05
  • Java多邊形重心計算

    Java多邊形重心計算

    今天小編就為大家分享一篇關于Java多邊形重心計算,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java數據結構之數組(動力節(jié)點之Java學院整理)

    Java數據結構之數組(動力節(jié)點之Java學院整理)

    這篇文章主要介紹了Java數據結構之數組(動力節(jié)點之Java學院整理)的相關資料,包括創(chuàng)建和內存分配,數組封裝后的使用等,需要的朋友參考下吧
    2017-04-04
  • java中struts2實現文件上傳下載功能

    java中struts2實現文件上傳下載功能

    這篇文章主要介紹了java中struts2實現文件上傳下載功能的方法,以實例形式分析了struts2文件上傳下載功能的實現技巧與相關問題,具有一定的參考借鑒價值,需要的朋友可以參考下
    2016-05-05
  • 死磕 java同步系列之synchronized解析

    死磕 java同步系列之synchronized解析

    這篇文章主要介紹了Java中syncronized正確使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-06-06
  • Java的Hibernate框架中Criteria查詢使用的實例講解

    Java的Hibernate框架中Criteria查詢使用的實例講解

    這篇文章主要介紹了Java的Hibernate框架中Criteria查詢使用的實例講解,Hibernate是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2016-01-01
  • SpringBoot3 響應式網絡請求客戶端的實現

    SpringBoot3 響應式網絡請求客戶端的實現

    本文主要介紹了SpringBoot3 響應式網絡請求客戶端的實現,文章詳細闡述了如何使用SpringBoot3的網絡請求客戶端進行HTTP請求和處理響應,并提供了示例代碼和說明,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • springboot默認日志框架選擇源碼解析(推薦)

    springboot默認日志框架選擇源碼解析(推薦)

    這篇文章主要介紹了springboot默認日志框架選擇源碼解析(推薦),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 利用Mybatis?Plus實現一個SQL攔截器

    利用Mybatis?Plus實現一個SQL攔截器

    SQL攔截器是一種用于攔截和修改Mybatis執(zhí)行的SQL語句的工具,通過使用SQL攔截器,開發(fā)人員可以在執(zhí)行SQL語句之前或之后對其進行修改或記錄,本文就來借助一下Mybatis-Plus實現一個SQL攔截器吧
    2023-05-05
  • Lock、Condition實現簡單的生產者消費者模式示例

    Lock、Condition實現簡單的生產者消費者模式示例

    這篇文章主要介紹了Lock、Condition實現簡單的生產者消費者模式示例,需要的朋友可以參考下
    2014-04-04

最新評論