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的異常處理詳解,並且研究過原始碼後,我覺得具體的實現可以不用看了。重...