首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SpringBoot 内部方法调用,事务不起作用的原因及解决办法

在做业务开发时,遇到了一个事务不起作用的问题。大概流程是这样的,方法内部的定时任务调用了一个带事务的方法,失败后事务没有回滚。查阅资料后,问题得到解决,记录下来分享给大家。  ...内部方式使用this调用方式时,使用的是实例调用,并没有通过代理类调用方法,所以会导致事务失效。  ...方法一 引入自身bean  在类内部通过@Autowired将本身bean引入,然后通过调用自身bean,从而实现使用AOP代理操作。  ...通过ApplicationContext引入bean  通过ApplicationContext获取bean,通过bean调用内部方法,就使用了bean的代理类。  ...(User user) {  ((UserService) AopContext.currentProxy()).invokeInsertUser(user);  }  以上就是内部方法调用时,事务不起作用的原因及解决办法

1.9K20

(11)SpringBoot整合EhCache做缓存

;且本示例持久层为jpa,所以我们顺便控制台输出一下sql,方便后面观察。...,会根据这个key先去缓存找是否有数据,如果有,就直接返回了,如果没有,那就会去数据库查询后返回,并以此key为key,存入缓存中;当再次调用方法时,若该缓存没有过期,那么当此方法的参数和这个key相同时...id=1599991,第一次访问时发现会有sql显示,第二次就没有sql了,因为缓存中已经有了这个id为key的数据了,直接走的缓存; 如果deleteById方法上没有@CacheEvict注解时,那我们执行...userName=momo456,会发现,尽管我们是第一次查询,但是控制台并没有显示sql语句,说明此请求并没有向数据库发送请求,而是直接走的缓存。...- beforeInvocation:非必需,默认为false,会在调用方法之后移除数据。当为true时,会在调用方法之前移除数据。

98710
您找到你想要的搜索结果了吗?
是的
没有找到

面试高频题:Spring和SpringMvc父子容器你能说清楚吗

引言 以前写了几篇关于SpringBoot的文章《面试高频题:springBoot自动装配的原理你能说出来吗》、《保姆级教程,手把手教你实现一个SpringBoot的starter》,这几天突然有个读者问...所以我们的入口就是SpringServletContainerInitializer的onStartup方法,这也应该是web容器启动调用Spring相关的第一个方法。...这是由于我们在web.xml 里面配置了DispatcherServlet,然后web容器就会去调用DispatcherServlet的init方法,并且这个方法只会被执行一次。...你有遇到事物不起作用的时候,其实这也是一种情况) 同时通过两个容器同时来管理所有的类?...这就导致了你的事物不起作用了。在补充一个问题:SpringBoot 里面是否还有父子容器?我们下篇再见!

1.4K10

SpringBoot异步请求和异步调用

SpringBoot异步请求和异步调用 异步请求与同步请求 同步请求 %% 时序图例子,-> 直线,-->虚线,->>实线箭头 sequenceDiagram participant 浏览器/APP...可通过控制台日志输出可以看出,每次输出线程名都是递增的。所以最好我们来自定义一个线程池。...调用的异步方法,不能为同一个类的方法(包括同一个类的内部类),简单来说,因为Spring在启动扫描时会为其创建一个代理类,而同类调用时,还是调用本身的代理类的,所以和平常调用是一样的。...调用的是静态(static )方法 调用(private)私有化方法 解决4中问题1的方式 将要异步执行的方法单独抽取成一个类,原理就是当你把执行异步的方法单独抽取成一个类的时候,这个类肯定是被...{ Map resMap = new HashMap(); try{ //这样调用同类下的异步方法不起作用

2.1K20

SpringBoot中异步请求和异步调用(看这一篇就够了)

; } }); return result; } 二、SpringBoot中异步调用的使用 1、介绍 异步请求的处理。...可通过控制台日志输出可以看出,每次输出线程名都是递增的。所以最好我们来自定义一个线程池。...调用的异步方法,不能为同一个类的方法(包括同一个类的内部类),简单来说,因为Spring在启动扫描时会为其创建一个代理类,而同类调用时,还是调用本身的代理类的,所以和平常调用是一样的。...b.调用的是静态(static )方法 c.调用(private)私有化方法 5、解决4中问题1的方式(其它2,3两个问题自己注意下就可以了) 将要异步执行的方法单独抽取成一个类,原理就是当你把执行异步的方法单独抽取成一个类的时候...{ Map resMap = new HashMap(); try{ //这样调用同类下的异步方法不起作用

2.1K20

jetcd实战之三:进阶操作(事务、监听、租约)

; 在AdvancedEtcdService.java中新增watch方法的定义,入参是指定的key,以及调用方定制的监听实现,返回值Watcher是jetcd对监听事件的封装,调用方可以用Watcher...etcdctl put abc 222 OK [root@centos7 ~]# docker exec 27_etcd1_1 /usr/local/bin/etcdctl del abc 1 此时在springboot...的控制台页面,可见监听的方法被执行了,修改和删除的具体内容都被打印出来: 租约 接下来学习租约特性,这是个很实用的功能,如果应用A负责维护某个key的续租,当应用A出现问题无法续租时则该key就会过期...,可见keepAlive的入参需要指定一个回调用来完成续租成功后的操作,该回调中的方法有点多: @Override public void putWithLease(String key, String...} /** * 每次续租操作完成后,该方法都会被调用

57230

SpringBoot + SCF 最佳实践:实现待办应用

每个微服务 API 被调用的频率不一样,可以利用 Serverless 精准管理成本和弹性。 2. 不用担心一个 API 调用量大而需要扩容整个服务,Serverless 可以自动扩缩容。 3....登录云函数 SCF 控制台; 云函数控制台地址:https://console.cloud.tencent.com/scf 2....切换到「函数代码」页签,按照如下流程操作,通过测试模板发起模拟请求体验待办应用增删改查功能: 查询待办列表: 请求方式选择 GET,path 填写 /todos,点击「测试」后,在响应 Body 中可以查看到当前的待办事项...修改待办事项: 请求方式选择 PUT,以将 key 为 3 的待办事项由未完成改为完成为例,path 填写 /todos/3,body 填写 {"key":"3","content":"Third todo...提交方法:本地上传 zip 包 单击上传选择打包好的 zip 文件 其他保持默认配置,单击「完成」即可完成函数创建。

1K20

jetcd实战之三:进阶操作(事务、监听、租约)

,txn方法表示事务开始,Cmp对象封装了做比较的逻辑,接下来的If、Then等方法规定了比较成功后的逻辑(您还可以选择使用Else方法),最后用commit方法将操作一次性提交: package com.bolingcavalry.dao.impl...; 在AdvancedEtcdService.java中新增watch方法的定义,入参是指定的key,以及调用方定制的监听实现,返回值Watcher是jetcd对监听事件的封装,调用方可以用Watcher.../etcdctl del abc 1 此时在springboot控制台页面,可见监听的方法被执行了,修改和删除的具体内容都被打印出来: [在这里插入图片描述] 租约 接下来学习租约特性,这是个很实用的功能...,可见keepAlive的入参需要指定一个回调用来完成续租成功后的操作,该回调中的方法有点多: @Override public void putWithLease(String key, String...} /** * 每次续租操作完成后,该方法都会被调用

1.1K00

SpringBoot Web开发精解

method用来指定请求方式,值为GET、POST、PUT、DELETE等等,同样,该注解也是针对不同的请求方式衍生出了几个具体的子注解,参考下表。...RESTfulAPI 便是目前前后端分离的最佳实践,在传统风格的接口中,请求方法只是使用了 get 或者 post 类型,但在 HTTP 请求方法中,method 存在较多的取值类型例如 put、delete...RESTfulAPI 设计如下: URL 请求方法(相关注解) 功能说明 /users GET(@GetMapping) 查询用户列表 /users POST(@PostMapping) 添加一个用户.../users/id GET(@GetMapping) 根据 id 查询用户信息 /users/id PUT(@PutMapping) 根据 id 修改用户信息 /users/id DELETE(@DeleteMapping.../index:是否能跳转到home.html并显示内容[this is home] /test:页面是否出现[success]且控制台是否显示打印信息。

54130

Springboot 整合RabbitMq ,用心看完这一篇就够了

本次实例教程需要创建2个springboot项目,一个 rabbitmq-provider (生产者),一个rabbitmq-consumer(消费者)。...接下来调用接口/sendTopicMessage2: 然后看消费者rabbitmq-consumer的控制台输出情况: TopicManReceiver监听队列1,绑定键为:topic.man TopicTotalReceiver...创建三个队列 :fanout.A fanout.B fanout.C * 将三个队列都绑定在交换机 fanoutExchange 上 * 因为是扇型交换机, 路由键无需配置,配置也不起作用...④消息推送成功 那么测试下,按照正常调用之前消息推送的接口就行,就调用下 /sendFanoutMessage接口,可以看到控制台输出: ConfirmCallback: 相关数据:null...好,这篇Springboot整合rabbitMq教程就暂且到此。

4.8K64

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券