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

怎么制作一个网站的二维码教育培训网站官网

怎么制作一个网站的二维码,教育培训网站官网,网站设计培训学校有哪家,成都 网站建设目录 ​编辑 一、方法内部调用 1、原理: 2、结论: 3、解决方法: 1. 增加一个service,把一个事务的方法移到新增加的service方法里面,然后进行注入再调用 2. 在自己类中注入自己 3. 通过AopContentent 二、访问权限不是pubilc 三、方法用final修饰 四、没有被spr…

 

目录

​编辑

一、方法内部调用

1、原理:

2、结论:

 3、解决方法:

1. 增加一个service,把一个事务的方法移到新增加的service方法里面,然后进行注入再调用

2. 在自己类中注入自己

3. 通过AopContentent

二、访问权限不是pubilc

三、方法用final修饰

四、没有被spring管理

五、数据库不支持事务

解决方案:使用InnoDB等支持事务的数据库引擎。

六、没有开启事务

七、错误的事务传播

八、自己捕获了异常

 1、 原因:

2.、解决方案:

        手动抛出异常或配置rollbackFor属性

九、手动抛出别的异常

十、自定义回滚异常

十一、多线程调用

十二、嵌套事务回滚过头

解决方法:


一、方法内部调用

在同一个类的service中,调用其他的事务方法

@Service
public class DemoService {@Transactionalpublic void query(Demo demo) {save(demo) ;}@Transactionalpublic void save(Demo demo) {}}

        可以看到,query方法调用了save的方法,由于spring的事务实现是因为aop生成代理,这样是直接调用了this对象,所以也不会生成事务。

1、原理:

        当spring容器启动的时候,发现有@EnableTransactionManagement注解,此时会拦截所有bean的创建,然后会扫描一下bean上是否有@Transaction注解(类、接口、或者方法上有这个注解都可以),如果有这个注解,spring会通过aop的方式给这个bean生成代理对象(代理对象中存在本类对象),代理对象中会增加一个拦截器,拦截器会拦截bean中public方法的执行,会在方法执行前启动事务,方法执行完毕之后提交或者回滚事务。

2、结论:

如果A和B两个方法在同一个类中
1、如果A加了@Transaction注解,B上有没有@Transaction注解,事务都是有效的,则AB 在同一个事务中。

2、如果A不加@Transaction注解,B上有没有@Transaction注解,事务都是无效的。

如果A和B两个方法不在同一个类中
1、如果A加了@Transaction注解,B上有没有@Transaction注解,事务都是有效的。

2、如果A不加@Transaction注解,B加了@Transaction注解,只有B是有事务的。

3、如果A不加@Transaction注解,B也不加@Transaction注解,A和B都是没有事务的。

简单理解:

        在同一个类中,只要A加了@Transaction注解,无论B加不加注解,AB都在同一个事务中,事务有效。

        如果AB在同一个类中,A不加注解,B加了注解,则事务失效;如果AB不同类,A不加注解,B加了注解,则只有B有事务。

原因分析:

        在A方法有@Transaction注解时,spring在管理的时候会生成一个代理类,在外部调用A方法时,实际执行的是代理类里面的方法,该代理类里面的方法已经包括了B方法的调用,已经成为了一个方法,所以事务是有效的。

 3、解决方法:


1. 增加一个service,把一个事务的方法移到新增加的service方法里面,然后进行注入再调用

@Service
public class DemoTwoService {@Transactionalpublic void save(Demo demo) {}
}@Service
public class DemoService {@AutowiredDemoTwoService demoTwoService;@Transactionalpublic  void query(Demo demo) {demoTwoService.save(demo);}
}

2. 在自己类中注入自己

@Service
public class DemoService {@AutowiredDemoService demoService;@Transactionalpublic  void query(Demo demo) {demoService.save(demo);}@Transactionalpublic void save(Demo demo) {}
}

由于这种写法基于spring的三级缓存不会导致,循环依赖的问题出现

3. 通过Aop

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

相关文章:

  • mvc 5 做网站的教程西安seo培训
  • 做网站网页需要什么西安seo外包优化
  • 建设银行网站怎么打印明细千川推广官网
  • 深圳网站建设便宜信科网络营销方案100个软文
  • 整站优化方案优化网站标题名词解释
  • 做网站数据库怎么建seo推广培训
  • 主机屋网站在那注册nba最新排行
  • 如何做网站推广营销seo是什么意思网络用语
  • 做网站 学php哪一部分百度认证营销推广师
  • 网站建设与管理实训太原seo排名优化软件
  • 山东 网站建设网站推广什么意思
  • 新增域名网站建设方案如何做推广最有效果
  • 杭州做网站公司排名超云seo优化
  • 程序员做网站给女朋友百度竞价是seo还是sem
  • 百度做网站联系电话信息流推广方式
  • 成都奶茶加盟网站建设软文营销的特点有哪些
  • 上海最近的新闻大事10条珠海百度推广优化排名
  • 自贡建设投资有限公司网站新手seo入门教程
  • 阿里巴巴是搭建的网站吗浙江网站建设营销
  • 中国建设银行淮南分行网站seo策略分析
  • 渭南网站建设费用明细如何做广告宣传与推广
  • 电商分销平台优化关键词方法
  • 医疗手机网站模板seo排名工具有哪些
  • 重庆巫山网站设计公司关键词网站查询
  • 国外做调查的网站电子商务seo是什么意思
  • 湛江免费建站哪里有软文营销的五个步骤
  • 菏泽网站建设招聘免费网络推广软件
  • 扬州做网站需要多少钱关键词优化武汉
  • 做婚纱网站的图片seo流量
  • 新疆生产建设兵团教育局官方网站大数据营销系统