javascript
银行转账java代码事务实现_Spring事务银行转账示例
https://www.imooc.com/video/9331
聲明式事務
@Transactiona()
編程式事務
非模板式(不使用TransactionTemplate)
http://cailangwei.blog.163.com/blog/static/1314585792014895755400/
applicationContext.xml:
DataSourceTransactionManager transactionManager =(DataSourceTransactionManager) ctx.getBean("transactionManager");
DefaultTransactionDefinition def= newDefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);//事物隔離級別,開啟新事務
TransactionStatus status = transactionManager.getTransaction(def); //獲得事務狀態
try{//邏輯代碼
transactionManager.commit(status);
}catch(Exception e) {
transactionManager.rollback(status);
}
模板式(使用TransactionTemplate)
spring為了簡化手動事務編程,提供了TransactionTemplate這個輔助類,把一些常用邏輯用泛型參數配合方法提供出來。
https://blog.csdn.net/wang0928007/article/details/7576591
https://blog.csdn.net/daijin888888/article/details/51822257
http://wzhw2008.iteye.com/blog/1687523
編程式注入模板:PaymentServiceImpl.java
//注入事務管理的模板
@Autowiredprivate TransactionTemplate transactionTemplate;
配置式注入模板:
使用模板包裹業務邏輯
Object result = transactionTemplate.execute(newTransactionCallback(){
@OverridepublicObject doInTransaction(TransactionStatus status) {//TODO 編寫支付業務邏輯
return 1;
}
});
銀行轉賬(包含支付寶、微信的接口)
調用對方的接口,對方的接口設計可能并非冪等的:
我方系統的order表本來與對應對方系統order,一條訂單一條支付記錄挺好。但是由于上述的非冪等,就需要增加一個訂單流水表(訂單號,流水號),來解決客戶重復點擊支付的問題。
總結
以上是生活随笔為你收集整理的银行转账java代码事务实现_Spring事务银行转账示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SuperMap BIM+GIS技术白皮
- 下一篇: gradle idea java ssm