当前位置: 首页 > wzjs >正文

企业展厅装修seo研究协会

企业展厅装修,seo研究协会,百度提交入口使用教程,上海知名网站建设公司事务传播方式是用于多个事务方法间调用,事务在这些方法中间的传播。Spring 支持7种传播方式。 1.PROPAGATION_REQUIRED(默认) 含义:如果当前存在事务,就加入该事务;若当前没有事务,就创建一个新的事务。 2.PROPAGAT…

事务传播方式是用于多个事务方法间调用,事务在这些方法中间的传播。Spring 支持7种传播方式。

1.PROPAGATION_REQUIRED(默认)

含义:如果当前存在事务,就加入该事务;若当前没有事务,就创建一个新的事务。

2.PROPAGATION_SUPPORTS

含义:如果当前存在事务,就加入该事务;若当前没有事务,就以非事务方式执行

3.PROPAGATION_MANDATORY

含义:当前方法必须在一个已经存在的事务中执行,如果不存在当前事务,就会抛出异常。

 4. PROPAGATION_REQUIRES_NEW

含义:无论当前是否存在事务,都会创建一个新的事务。如果当前存在事务,会将当前事务挂起,直到新事务执行完毕

5.PROPAGATION_NOT_SUPPORTED

含义:以非事务方式执行,如果当前存在事务,会将当前事务挂起

6. PROPAGATION_NEVER

含义:以非事务方式执行,如果当前存在事务,会抛出异常。

7. PROPAGATION_NESTED

含义:如果当前存在事务,会在当前事务的嵌套事务中执行;若当前没有事务,就创建一个新的事务。嵌套事务是当前事务的子事务,它有自己的保存点,若嵌套事务回滚,不会影响外层事务,但外层事务回滚会导致嵌套事务回滚

下面我们用Spring 声明式事务管理来看一下  传播方式:PROPAGATION_MANDATORY 使用,比如说有methodA 和methodB 两种方式,其中 methodA 调用methodB 

methodA 如下:

	public static void main(String[] args) {ApplicationContext beanFacotory = new ClassPathXmlApplicationContext("beans.xml");IAccountService accountService = beanFacotory.getBean("accountService",IAccountService.class);accountService.addMoney("500","tom");}

methodB 如下:

	@Override@Transactional(propagation = Propagation.MANDATORY)public void addMoney(String money, String name) {try {String sql = "update t_account set money=money+" + money + " where username=\'" + name + "\'";jdbcTemplate.execute(sql);} catch (Exception e) {e.printStackTrace();}}

那么methodB 要求 methodA 存在事务管理,但是现在methodA中并不存在事务管理

所以methodB会抛出异常

Exception in thread "main" org.springframework.transaction.IllegalTransactionStateException: No existing transaction found for transaction marked with propagation 'mandatory'at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:360)at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:474)at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:289)at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)at jdk.proxy2/jdk.proxy2.$Proxy9.addMoney(Unknown Source)at com.inspur.Client.main(Client.java:21)

当然上方异常的出现,就是methodB要求,调用者必须使用事务管理,但是我们main方法没有,如果你没有出现对应的异常,需要排查:

调用方法未开启事务:调用带有 MANDATORY 传播行为方法的上层方法没有开启事务。比如,调用 methodBMANDATORY 传播行为)的 methodA 没有开启事务。

事务配置问题:事务管理器配置有误,或者没有启用事务管理功能。

代理调用问题:在 Spring 中,事务是基于 AOP 代理实现的。若方法是通过内部调用,而不是通过代理对象调用,事务可能不会生效。

希望对你有所帮助!

http://www.dtcms.com/wzjs/425821.html

相关文章:

  • 银行的网站怎么做优化seo软件
  • vs2013做简单的网站学生没钱怎么开网店
  • 辽宁省住房建设厅网站深圳网络营销推广
  • 已备案网站新增接入上海抖音seo
  • 做业务 哪个网站比较好常州百度搜索优化
  • 常州建设局网站首页网络营销推广方案3篇
  • 网站备案完成后免费的网络推广渠道
  • 做网站需要多少费用厦门百度seo
  • 深圳的网站建设公司有哪些域名注册服务网站查询
  • 电商网站运维怎么做长沙网站外包公司
  • 网站建设与管理视频教程友链交换有什么作用
  • 门户类型网站有哪些快速排名优化推广排名
  • ppt代做网站制作一个网页的步骤
  • Wordpress生成密码加密方式黑帽seo培训多少钱
  • 关于珠海网站建设的优势企业营销推广怎么做
  • 网站如何做镜像网络口碑营销名词解释
  • 下载网站源代码广告词
  • 网站做支付需要什么备案谷歌seo网络公司
  • php支持大型网站开发吗北京百度seo点击器
  • 唐山建网站的公司盘古百晋广告营销是干嘛
  • 微信公众好第三方网站怎么做微信推广方法
  • 音乐网站建设策划西安官网seo技术
  • 快速搭建网站信息库泰州百度关键词优化
  • 云南省昆明市做网站的公司江西seo推广
  • 建网站的价格百度知道下载
  • 乌鲁木齐网站设计定制天津seo外包平台
  • 广州市官网网站建设平台官方进一步优化
  • 网站开发单位企业网站建设的目的
  • 经营性网站备案要求seo搜索引擎优化知乎
  • 免费java源码分享网站源码百度seo标题优化软件