Spring事务传播行为是什么?怎么用?其实这些困扰都可以总结成一个问题,即Spring事务传播行为的实现方式,下面我们运用实例来展示Spring事务传播行为的实现方式。

假如有两个方法A和B,A调用B,这两个方法上都加了事物,究竟使用哪个事物?
Public void A(){
B();
}
这就是spring事物传播行为要解决的问题。
在spring中有七种事务传播行为。
简单介绍一下这七种方式(如果不懂不用纠结,后面详细介绍)
常用:
REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中,一般的选择(默认值)
REQUIRES_NEW : 新建事务,如果当前在事务中,把当前事务挂起。
我们重点介绍一下常用的两种:
一:
数据访问层:
@Repository("accountDao")public class AccountDaoImpl{updateAccount(Account account) {
jdbcTemplate.update(,account.getMoney(),account.getId());
}}
业务逻辑层:
@Service("accountService")public class AccountServiceImpl{@Transactional(propagation=Propagation.REQUIRED)
transfer(Account source, Account target, Float money) {
source.setMoney(source.getMoney()-money);target.setMoney(target.getMoney()+money);.updateAccount(source);
.updateAccount(target);
}@Transactional(propagation=Propagation.REQUIRED)
transferException(Account source, Account target, Float money) {
source.setMoney(source.getMoney()-money);target.setMoney(target.getMoney()+money);.updateAccount(source);
i=1/0;
.updateAccount(target);
}}
测试:
@Test
public voidtestDo(){
serviceImpl.transfer("%张%","%李%",1000f);serviceImpl.transferException ("%张%","%李%",2000f);int I = 1/0; }
现在测试的方法testDo上没有加事务,当它调用serviceImpl.transfer()方法的时候,因为transfer使用REQUIRED修饰,所以transfer会新建一个事务,自己独立在该事务执行,成功转账1000,张三账户1000,李四4000。当调用serviceImpl.transferException时新建事务,在执行该方法时发生异常,事务回滚,所以转账不成功,张三账户1000,李四4000,此时这两个方法都是在自己的事务中独立执行。
@Test
public voidtestDo(){
serviceImpl.transfer("%张%","%李%",1000f);serviceImpl.transferException ("%张%","%李%",2000f);}
当它调用serviceImpl.transfer()方法的时候transfer方法和transferException方法加入到testDo方法的事务中,他们都在一个事务,当发生异常的时候事务回滚,转账1000和2000都不成功,张三账户2000,李四3000。
二::
测试:
@Test
public voidtestDo(){
serviceImpl.transfer("%张%","%李%",1000f);serviceImpl.transferException ("%张%","%李%",2000f);int I = 1/0; }
关于Spring事务传播行为的实现方式就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果喜欢这篇文章,不如把它分享出去让更多的人看到。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。