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

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

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

实现思路:
①、核心逻辑其实你会发现在于“拉取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表的创建语句:

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

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

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

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

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

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

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

原文地址:http://blog.51cto.com/13877966/2152954

时间: 2024-11-13 03:55:46

SpringBoot知识体系实战-定时器篇的相关文章

SpringBoot知识体系实战-前言

介绍:就像每本书都有前言一样,接下来我也为我即将分享的SpringBoot知识体系实战系列文章做一个前言介绍.作为现在微服务体系主流的框架,我想诸位都知晓SpringBoot,SpringCloud,打开Spring官网(官网链接)会发现SpringBoot已经是Spring开发团队重点推荐的核心技术之一!可想而知,其主流趋势已很明显! 目的:我接下来要撰写的SpringBoot知识体系实战系列文章,虽然可能会跟现在网上诸位大牛分享的有些相似,在此若有雷同之处还敬请谅解!有些看官可能会问,那你撰

前端知识体系之入门篇总结(一)

利用国庆节时间,把前端学习的知识碎片进行了整理,希望能在前端之路继续努力. 前端是一个范围很大的概念,其领域包括在了计算系统中的方方面面,可以说所有与用户交互行为相关的程序开发工作都是前端的范围,这包括一个数字仪表的显示设计或者一个手机APP.通常意义上讲,前端指的是Web前端的开发工作,而学习前端也是从Web前端知识开始的. 这篇blog面向对前端没有入门或者已经有一定的网页编码技术但对于前端知识体系没有一个清晰条理的开发者,其要旨是整理一个普通网页开发过程中所能用到的知识点.与其它类似的教程

Android安卓开发环境搭建应用游戏项目实战知识体系_极客学院

Java是Android开发的主要语言,所以掌握Java语言基础非常重要,本阶段讲解了Java的基本语法,要深入掌握Java语言,可以通过Java学习路径图学习. 17课程 10小时 19分钟 1.Java编程基础知识入门:变量与数据类型 本课学习变量的命名.定义和初始化及整数.浮点.字符数据类型. 25课时,141分钟 626人学习 2.Java语言Switch语句详解 本课学习switch语句,switch语句是分支语句的一组,适用于判断同一变量的多种状态,进行流程控制. 5课时,17分钟

Web 前端知识体系精简

Web前端技术由html.css和javascript三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言.而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很难理清楚整个体系的脉络结构.本文将对Web前端知识体系进行简单的梳理,对应的每个知识点点到为止,不作详细介绍.目的是帮助大家审查自己的知识结构是否完善,如有遗漏或不正确的地方,希望共勉. JAVASCRIPT 篇 0.基础语法 Javascript基础语法包括:变量定义.数据类

前端涉及的所有知识体系

资源教程: 综合类 前端知识体系 前端知识结构 Web前端开发大系概览 Web前端开发大系概览-中文版 Web Front-end Stack v2.2 免费的编程中文书籍索引 前端书籍 前端免费书籍大全 前端知识体系 免费的编程中文书籍索引 智能社 - 精通JavaScript开发 重新介绍 JavaScript(JS 教程) 麻省理工学院公开课:计算机科学及编程导论 JavaScript中的this陷阱的最全收集--没有之一 JS函数式编程指南 JavaScript Promise迷你书(中

Web前端知识体系精简

Web前端技术由html.css和javascript三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言.而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很难理清楚整个体系的脉络结构.本文将对Web前端知识体系进行简单的梳理,对应的每个知识点点到为止,不作详细介绍.目的是帮助大家审查自己的知识结构是否完善,如有遗漏或不正确的地方,希望共勉. JAVASCRIPT 篇 0.基础语法 Javascript基础语法包括:变量定义.数据类

前端知识体系2

Raw Blame History 1226 lines (983 sloc) 67.4 KB QQ联盟群交流(492107297)群规 GITHUB在线地址 http://t.cn/RL2NtqX 看云在线地址 http://t.cn/RUdaGHn 这是我们联盟群的组织结构,加入等级参考JS高级前端开发群加群说明. 这本来是我QQ群内部的一份公共约定的日常交流规则,后来得到大伙的一致认可,并用实际行动来捍卫它,使我倍受感动. 后来想:传播使爱更有力量,阅读使内心更为坚强,沉淀使生活更为醇香,

向着全栈工程师前进!Web前端知识体系精简

Web前端技术由html.CSS和JavaScript三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言.而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很难理清楚整个体系的脉络结构.本文将对Web前端知识体系进行简单的梳理,对应的每个知识点点到为止,不作详细介绍.目的是帮助大家审查自己的知识结构是否完善,如有遗漏或不正确的地方,希望共勉. JAVASCRIPT 篇 重点:爱创课堂8月份web前端培训课程就要开课: 特针对零基础开

最全的资源教程-前端涉及的所有知识体系

https://github.com/AutumnsWind/Front-end-tutorial 资源教程: 综合类 前端知识体系 前端知识结构 Web前端开发大系概览 Web前端开发大系概览-中文版 Web Front-end Stack v2.2 免费的编程中文书籍索引 前端书籍 前端免费书籍大全 前端知识体系 免费的编程中文书籍索引 智能社 - 精通JavaScript开发 重新介绍 JavaScript(JS 教程) 麻省理工学院公开课:计算机科学及编程导论 JavaScript中的t