SpringBoot知识体系实战-定时器篇(boot,spring,定时器,开发技术)

时间:2024-05-02 06:46:30 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

实战前言:定时任务我想诸位童鞋都不陌生,简而言之名为“设定定时闹钟做某件事情”,在这里我将以订单模块作为实战为例!

需求分析:在企业级应用中,经常打交道的业务应当属于订单模块了,下面将基于这样的场景实战定时器:将业务级别的订单表A中发生更新的数据 每天定时 同步到报表级别的订单表B中(为了给数据分析部门做报表)!其定时执行的业务流程如下图所示:
SpringBoot知识体系实战-定时器篇

实现思路:
①、核心逻辑其实你会发现在于“拉取A表的数据以及更新到报表级别的订单表B中”;
②、实现①流程之后,接下来其实是定时器的责任了。在这里我采用的是Spring提供的Scheduler模块来实现!
③、在这里需要解释“发生更新”的概念,假设每天拉取数据的日期定义为reportDate,那么更新的数据应当包括:“create_time=reportDate的数据列表”以及“update_time=reportDate的数据列表”,即“当天新产生的数据以及当天发生更新的数据”统称为“发生更新的数据”,即增量拉取;
在实战过程中,我也实现了全量拉取的业务逻辑。而对于报表级别的订单表B,则是通过order_no,即订单编号来判断记录是否唯一从而决定触发B表的数据记录是需要修改还是新增

正文:当得到上面的实现思路时,其实已经几乎实现了一大半,接下来就是代码实现了
①、首先创建数据库db_springboot,创建两张数据字段一样的表,分别为业务级别的数据表A:order_record,报表级别的数据表B:order_report。并用mybatis逆向工程生成entity,mapper,mapper.xml文件(在这里就不贴出来了!),下面贴出A,B表的创建语句:
SpringBoot知识体系实战-定时器篇

SpringBoot知识体系实战-定时器篇

②、然后在业务级别的订单模块OrderRecordMapper中定义全量/增量拉取的sql逻辑:

SpringBoot知识体系实战-定时器篇

SpringBoot知识体系实战-定时器篇

③、在报表级别的订单模块OrderReportMapper中定义新增或者修改的sql逻辑,即通过订单编号查询的sql逻辑

SpringBoot知识体系实战-定时器篇

SpringBoot知识体系实战-定时器篇

④、采用Spring的Scheduler组件模块实现定时逻辑,在使用之前,需要在SpringBoot启动类开启Scheduler,如下所示:
SpringBoot知识体系实战-定时器篇

⑤、而真正的定时代码逻辑如下:

SpringBoot知识体系实战-定时器篇

SpringBoot知识体系实战-定时器篇

效果:在这里,@Scheduled是核心重点,而其中的cron参数其实就是:“秒 分 时 日 月 年”的设置,在这里我是动态配置配置文件中,配置如下图所示:
SpringBoot知识体系实战-定时器篇

系统一启动,将会在定时设置的cron的那个点开始触发,首先是源数据表,接着是从源数据表中“拉取今天新增的以及新增更新的数据列表” 并新增或者更新到 目标报表表B中,数据表中的数据以及触发的效果如下图所示:
SpringBoot知识体系实战-定时器篇

SpringBoot知识体系实战-定时器篇

SpringBoot知识体系实战-定时器篇

结语:以上涉及到的源码以及数据库下载地址:http://down.51cto.com/data/2449867 实战过程如有相关问题,请多多指教!若文章能帮助到你,请点赞转发分享呗,顺便关注关注我的微信公众号或者加我个人qq:1974544863 或者 qq群:583522159(java开源技术交流)进行技术交流
SpringBoot知识体系实战-定时器篇

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:SpringBoot知识体系实战-定时器篇的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:用Cookie实现一天免登录功能下一篇:

2 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18