一。关于配置可以参考下面的文章
1.atomikos+spring+mybatis
http://www.tianshouzhi.com/api/tutorials/distributed_transaction/386
其作者的文章系列地阐述了分布式事务的概念以及现在一些流行的解决方案。希望对分布式事务有一个比较完整的了解可以看看该作者的博客。
下面的一些博客配置也可以参考
https://www.2cto.com/kf/201801/714523.html
数据源配置
https://blog.csdn.net/guchuanlong/article/details/12600337
总结:
就分布式事务来说,使用分布式事务的解决机制后,必然会造成性能的消耗。在项目建立的时候,要避免分布式事务,如果实在避免不了,可以采取下面的几个方案:
同一个web服务器,多个数据库,可以使用Atomikos
跨越多个web服务器的事务,如果远程调用支持事务传播,那么使用JTA就可以;如果不支持事务传播,进尽量转化为一个web服务器的情况。
二。简单的描述一下用法
spring事务的用法
1. @Transactional 食物
2. Aop编程
在aop配置事务控制或注解式控制事务中,try...catch...会使事务失效,可在catch中抛出运行时异常throw new RuntimeException(e)或者手动回滚TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();使得事务生效,异常回滚。
例如:
@Transactional(value="jtaTransactionManager",propagation=Propagation.REQUIRED)
public UserModel login(UserModel user){
if(userSave){
try {
userDao.save(user);
userCapabilityQuotaDao.save(capabilityQuota);
} catch (Exception e) {
logger.info("能力开通接口,开户异常,异常信息:"+e);
throw new RuntimeException();//默认捕获uncheck异常 error 和RuntimeException异常
//或者TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
}
}