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

潍坊兆通网站建设wordpress编辑器添加短代码按钮

潍坊兆通网站建设,wordpress编辑器添加短代码按钮,家具展示网站源码,企业网站制作心得事务失效场景 方法用private或final修饰 Spring底层使用了AOP#xff0c;而AOP的实现方式有两种#xff0c;分别是JDK动态代理和CGLIB#xff0c;JDK动态代理是实现抽象接口#xff0c;CGLIB是继承父类,无论哪种方式#xff0c;都需要重写方法来进行方法增强#xff0c;而…事务失效场景 方法用private或final修饰 Spring底层使用了AOP而AOP的实现方式有两种分别是JDK动态代理和CGLIBJDK动态代理是实现抽象接口CGLIB是继承父类,无论哪种方式都需要重写方法来进行方法增强而用private或final修饰的方法都是不能被重写的 方法自调用(如何解决方法自调用导致的事务失效) UserService类中开启A方法调用B方法直接调用A方法会导致B方法的Transactional注解不生效从而导致事务失效 Component public class UserService{Autowiredprivate JdbcTemplate jdbcTemplate;Transactionalpublic void A() {//this.B()和B()同理B();}Transactional(propagation Propagation.NEVER)public void B(){jdbcTemplate.execute(insert into user values(1, 1, 1));throw new NullPointerException();} }为什么事务会失效Spring生成的代理类大致如下调用A方法会执行$Proxy0.A()而B方法是被代理对象target调用的所以方法不会被增强 public class $Proxy0 extends UserService {private UserService target;public void A() {//建立数据库连接ConnectionConnection connection DriverManager.getConnection(jdbc:mysql:///user);connection.setAutoCommit(false);try{target.A();}catch(RuntimeException exception){connection.rollback();return;}connection.commit();} }多线程调用 执行SQL时会从ThreadLocal里获取数据库连接对象而ThreadLocal是线程隔离的新线程无法从主线程的ThreadLocal里获取数据库连接对象所以只能新建一个数据库连接来执行SQL此时autoCommit默认是true执行完SQL就会自动提交抛出异常也就不能回滚了 Component public class UserService {Autowiredprivate JdbcTemplate jdbcTemplate;Transactionalpublic void B() {new Thread(() - {jdbcTemplate.execute(insert into user values(1, 1, 1));throw new NullPointerException();}).start();} }类没有被Spring管理 数据库不支持事务 异常被手动try-catch掉了 如何解决方法自调用导致的事务失效 自己注入自己 Component public class UserService {Autowiredprivate JdbcTemplate jdbcTemplate;Autowiredprivate UserService userService;public void A() {//从Spring容器中取出代理对象userService.B();}Transactionalpublic void B() {jdbcTemplate.execute(insert into user values(1, 1, 1));throw new NullPointerException();} }把被调用的方法拆分到别的Bean中然后再把这个Bean注入进来 AopContext.currentProxy() EnableAspectJAutoProxy(exposeProxy true) Component public class UserService {Autowiredprivate JdbcTemplate jdbcTemplate;public void A() {UserService userService (UserService) AopContext.currentProxy();userService.B();}Transactionalpublic void B() {jdbcTemplate.execute(insert into user values(1, 1, 1));throw new NullPointerException();} }
http://www.w-s-a.com/news/294440/

相关文章:

  • 长春火车站是哪个站做微商哪个网站有客源
  • 亚马逊培训费用一般多少seo专业培训课程
  • 做推文封面图网站南宁高端网站建设
  • 天津网站搜索排名做电影免费ppt模板下载网站
  • 襄樊最好网站建设价格网站建设与设计 毕业设计
  • 网站推广广告词大全集网站建设相对路径
  • 甘肃省铁路投资建设集团有限公司网站域名怎么实名认证
  • 企业网站建设的层次返利网站建设
  • 竞价单页网站制作中小企业网站建设问题
  • 响应式网站源码学校网站制作多少钱
  • 营销型网站建设需要懂什么网站建站四件套是什么
  • 廊坊哪里有制作手机网站的区块链开发语言
  • 找建设项目的网站装企工长网站开发
  • 戴尔网站建设成功方正网站制作
  • 怎么买网站域名wordpress 视频站模版
  • 厦门官网建设公司杨和关键词优化
  • 怎么做网约车seo自动优化软件下载
  • 遵义市住房和城乡建设局官方网站网站备案 自己的服务器
  • 分销系统价格多少北京网站优化平台
  • 怎样做旅游公司的网站泉州网站建设方案优化
  • 手机网站页面范例个人网站做淘宝客违规
  • 做一套网站开发多少钱SEO做得最好的网站
  • 咸宁做网站的公司那家便宜福建建设注册管理中心网站
  • 网站建设工作汇报黑科技广告推广神器
  • 淘宝做首页热点的什么网站徐州建设安全监督网站
  • 正规的镇江网站建设广州有什么好玩的东西
  • 丹阳网站设计公司网站开发 0755
  • 百度网页版浏览器网址找文网优化的技术团队
  • 信息网站怎么做做儿童网站赚钱吗
  • 帝国cms 网站迁移个人网站备案备注