189 8069 5689

Spring事务传播行为是什么?怎么用-创新互联

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

在成都网站建设、成都网站制作中从网站色彩、结构布局、栏目设置、关键词群组等细微处着手,突出企业的产品/服务/品牌,帮助企业锁定精准用户,提高在线咨询和转化,使成都网站营销成为有效果、有回报的无锡营销推广。创新互联专业成都网站建设十年了,客户满意度97.8%,欢迎成都创新互联客户联系。

假如有两个方法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许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:Spring事务传播行为是什么?怎么用-创新互联
标题网址:http://jkwzsj.com/article/ishjp.html

其他资讯