springboot自定義事務

2021-10-10 21:23:48 字數 2409 閱讀 9320

1.在springboot專案中service的實現類可以通過註解@transactional新增事務

1.1 如果在service層用了try catch,在catch裡面再丟擲乙個 runtimeexception異常,這樣出了異常才會回滾

1.2你還可以直接在catch後面寫一句回滾**(transactionaspectsupport.currenttransactionstatus().setrollbackonly();來實現回滾,這樣的話,就可以在拋異常後也能return 返回值;比較適合需要拿到service層的返回值的場景。

2.可以通過設定包名統一設定事務

3.自定義**內設定事務

(1).注入事務管理類

@resource

platformtransactionmanager platformtransactionmanager;

@resource

transactiondefinition transactiondefinition;

2)使用事務

@resource

@resource

@resource

//購買商品id

private int purchaseproductid = 100100;

//購買商品數量

private int purchaseproductnum = 1;

@autowired

private platformtransactionmanager platformtransactionmanager;

@autowired

private transactiondefinition transactiondefinition;

private lock lock = new reentrantlock();

// @transactional(rollbackfor = exception.class)

public integer createorder() throws exception

//商品當前庫存

integer currentcount = product.getcount();

system.out.println(thread.currentthread().getname() + "庫存數:" + currentcount);

//校驗庫存

if(purchaseproductnum > currentcount)

platformtransactionmanager.commit(transaction1);

}finally

transactionstatus transaction = platformtransactionmanager.gettransaction(transactiondefinition);

order order = new order();

order.setorderamount(product.getprice().multiply(new bigdecimal(purchaseproductnum)));

order.setorderstatus(1);//待處理

order.setreceivername("***");

order.setreceivermobile("13311112222");

order.setcreatetime(new date());

order.setcreateuser("***");

order.setupdatetime(new date());

order.setupdateuser("***");

orderitem orderitem = new orderitem();

orderitem.setorderid(order.getid());

orderitem.setproductid(product.getid());

orderitem.setpurchaseprice(product.getprice());

orderitem.setpurchasenum(purchaseproductnum);

orderitem.setcreateuser("***");

orderitem.setcreatetime(new date());

orderitem.setupdatetime(new date());

orderitem.setupdateuser("***");

platformtransactionmanager.commit(transaction);

return order.getid();

}

自定義Spring Boot裝配

spring boot自動配置會嘗試根據新增的jar依賴項自動配置spring應用程式。使用 componentscan 查詢您的bean 和使用 autowired 進行建構函式注入 自動配置類使用 conditionalonclass和 conditionalo singbean注釋,condi...

springboot自定義配置

1 說明 springboot的開發中,我們有些時候,需要將一些引數寫進yml配置,方便部署後修改,這時我們便可以使用springboot 提供的自定義配置的功能了 2 引入依賴 dependency groupid org.springframework.boot groupid artifact...

Springboot自定義異常處理

springboot 預設把異常的處理集中到乙個modelandview中了,但專案的實際過程中,這樣做,並不能滿足我們的要求。具體的自定義異常的處理,參看以下 spring boot異常處理詳解 如果仔細看完spring boot的異常處理詳解,並且研究過原始碼後,我覺得具體的實現可以不用看了。重...