Spring | Sring Task (定时任务框架) 、微信小程序开发

目录:

    • 一、Sring Task (定时任务框架) :
      • Sring Task介绍
      • Spring Task应用场景
      • corn表达式
      • corn表达式在线生成器
      • SpringTask入门案例:
        • 导入maven依赖
        • 启动类上添加 @EnableScheduling 注解
        • 定时方法上添加 @Scheduled( cron = “xxxxx” ) 注解
        • 自定义“定时任务类
    • 二、微信小程序开发 :
      • 小程序
      • 开发、上线小程序流程:
      • 微信小程序代码 (苍穹外卖) + 后端代码

一、Sring Task (定时任务框架) :

Sring Task介绍

  • Spring TaskSpring框架提供的任务调度工具可以按照约定的时间执行某个代码逻辑
    定时自动执行某段Java代码
  • Spring Task自动触发的不需要客户端发送请求

Spring Task应用场景

Spring Task应用场景

  • 信用卡每月还款
  • 银行贷款每月还款提醒
  • 火车票售票系统处理未支付订单
  • 入职纪念日为客户发送通知
    只要需要定理处理的场景都可以用Spring Task

corn表达式

  • cron表达式就是一个字符串,通过corn表达式可以定义任务触发时间
  • corn表达式的构成规则:分为 6个7个域,由空格隔开,每个域代表一个含义。
    每个域的含义分别是 分钟小时(可选)。
  • 例子如
    2023年11月1日上午9点整 对应的 corn表达式 为 : 0 0 9 1 11 2023
    在这里插入图片描述

corn表达式在线生成器

corn表达式在线生成器https://cron.qqe2.com/

SpringTask入门案例:

导入maven依赖
  • Spring Task是一个非常小的框架,小到它单独的一个jar包都没有,与其有关的api集成在spring-context包中
    在这里插入图片描述

  • <!-- spring-context依赖,其中集成了Spring Task的api --> 
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.23</version>
    </dependency>
    
启动类上添加 @EnableScheduling 注解
  • 启动类上 添加 @EnableScheduling注解 开启任务调度
    在这里插入图片描述
定时方法上添加 @Scheduled( cron = “xxxxx” ) 注解
  • 定时方法上添加 @Scheduled( cron = “xxxxx” ) 注解。此方法中写具体的业务逻辑

在这里插入图片描述

自定义“定时任务类
  • 定时任务类中需要包含具体的业务逻辑,即任务触发时具体描述什么事情

  • 例子如:

    @Component
    @Slf4j
    /**
     * 定时任务类
     */
    public class MyTask { 
    
        /**
         * 定时任务: 每五秒触发一次
         */
        @Scheduled(cron = "0/5 * * * * ? ")
        public void excuteTask() {
            log.info("定时任务开始执行: {}",new Date());
        }
    }
    
    /**
     * 定时任务类,定时处理订单状态
     */
    @Component
    @Slf4j
    public class OrderTask {
    
        @Autowired
        private OrderMapper orderMapper;
    
        /**
         * 处理超时订单的方法
         */
        @Scheduled(cron = "0 * * * * ? ") //每分钟触发一次
        public void processTimeoutOrder(){
            log.info("定时处理超时订单:{}", LocalDateTime.now());
    
            LocalDateTime time = LocalDateTime.now().plusMinutes(-15);
    
            // select * from orders where status = ? and order_time < (当前时间 - 15分钟)
            List<Orders> ordersList = orderMapper.getByStatusAndOrderTimeLT(Orders.PENDING_PAYMENT, time);
    
            if(ordersList != null && ordersList.size() > 0){
                for (Orders orders : ordersList) {
                    orders.setStatus(Orders.CANCELLED);
                    orders.setCancelReason("订单超时,自动取消");
                    orders.setCancelTime(LocalDateTime.now());
                    orderMapper.update(orders);
                }
            }
        }
    
        /**
         * 处理一直处于派送中状态的订单
         */
        @Scheduled(cron = "0 0 1 * * ?") //每天凌晨1点触发一次
        public void processDeliveryOrder(){
            log.info("定时处理处于派送中的订单:{}",LocalDateTime.now());
    
            LocalDateTime time = LocalDateTime.now().plusMinutes(-60);
    
            List<Orders> ordersList = orderMapper.getByStatusAndOrderTimeLT(Orders.DELIVERY_IN_PROGRESS, time);
    
            if(ordersList != null && ordersList.size() > 0){
                for (Orders orders : ordersList) {
                    orders.setStatus(Orders.COMPLETED);
                    orderMapper.update(orders);
                }
            }
        }
    }
    

二、微信小程序开发 :

小程序

  • 小程序 / 微信小程序 是一种新的开发能力,可以在微信内被便捷的获取和传播,同时具有出色的使用体验。

  • 具体了解微信小程序

开发、上线小程序流程:

  • 第一步注册小程序。在微信平台注册小程序,完成注册后可以同步进行信息完善和开发。
    前往注册微信小程序

  • 第二步小程序信息完善

    填写小程序基本信息,包括名称、头像、介绍及服务范围等。

    在这里插入图片描述

    信息完善后要在 开发开发管理开发设置 中获取 AppID(小程序ID)AppSecret(小程序密钥)
    在这里插入图片描述
    在这里插入图片描述

  • 第三步开发小程序
    完成小程序开发者绑定、开发信息配置后,开发者可下载开发者工具、参考开发文档进行小程序的
    开发和调试。
    开发者工具下载地址
    开发者工具-网盘领取

  • 第四步提交审核和发布
    完成小程序开发后,提交代码至微信团队审核,审核通过后即可发布(公测期间不能发布)。

微信小程序代码 (苍穹外卖) + 后端代码

  • 微信小程序代码 (苍穹外卖) ,附带有完整后端代码 + 微信小程序代码,以及相关的开发信息
  • 代码链接
    微信小程序代码 + 后端代码 (网盘下载)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/115831.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【蓝桥每日一题]-倍增(保姆级教程 篇1)

今天讲一下倍增 目录 题目&#xff1a;忠诚 思路&#xff1a; 题目&#xff1a;国旗计划 思路&#xff1a; 查询迭代类倍增&#xff1a; 本质是一个一个选区间使总长度达到 M,类似凑一个数。而我们会经常用不大于它最大的二的次幂&#xff0c;减去之后&#xff0c;再重复这…

ubuntu22.04安装公司安全VPN的方案

公司为了安全设置VPN,但是liunxVPN工具不好用&#xff0c;今天找了一个好用的VPN工具 https://www.leagsoft.com/doc/article/103107.html 有各种版本&#xff0c;支持IOS和android等系统。 安装步骤 1/下载安装程序 https://www.leagsoft.com/doc/article/103107.html 2 …

vim三种模式,文本操作(操作字符/光标,列出行号可视化块模式/多文件查看)

目录 vim--文本编辑器 功能 基本概念 命令/默认模式 插入模式 底行模式 文本操作 引入 移动光标位置 删除字符 -- x/dd 复制/粘贴字符 -- yw/yyp 替换文本 -- r / %s 底行模式 全局替换 -- /g 撤销操作 -- u / ctrlr 修改字符 -- cw 示例 跳行 -- ctrlg 底行…

Vue的虚拟dom和diff算法

一、是什么 diff算法是一种通过同层级的树节点进行比较的高效算法 diff算法是为了进行精细化比对&#xff0c;最小量更新的 特点&#xff1a; 1.同级比较&#xff1a;比较只在同层级进行 2.首尾指针法&#xff1a;从两边向组件比较 比较方式/策略&#xff1a;深度优先&#xff…

家政APP开发服务同城预约维修接单管理系统软件小程序

家政服务小程序是一个基于移动端的家政服务平台&#xff0c;为用户提供方便快捷的家政服务。以下是小程序的主要功能&#xff1a; 1. 家政服务内容展示&#xff1a;商家可以在小程序中展示各种家政服务项目&#xff0c;如清洁、保洁、保姆、月嫂、钟点工等。用户可以浏览服务信…

Ubuntu下安装vscode,并解决终端打不开vscode的问题

Visual Studio Code安装 1&#xff0c;使用 apt 安装 Visual Studio Code 在官方的微软 Apt 源仓库中可用。按照下面的步骤进行即可&#xff1a; 以 sudo 用户身份运行下面的命令&#xff0c;更新软件包索引&#xff0c;并且安装依赖软件&#xff1a; sudo apt update sud…

[自定义 Vue 组件] 小尾巴下拉菜单组件(2.0) TailDropDown

文章归档&#xff1a;https://www.yuque.com/u27599042/coding_star/kcoem6dgyn8drglb [自定义 Vue 组件] 下拉菜单(1.0) DropDownMenu&#xff1a;https://www.yuque.com/u27599042/coding_star/llltv52tchmatwg4 组件效果示例 组件所依赖的常量 在 src 目录下&#xff0c;创…

Redis中Hash类型的命令

目录 哈希类型的命令 hset hget hexists hdel hkeys hvals hgetall hmget hlen hsetnx hincrby hincrbyfloat 内部编码 Hash类型的应用场景 作为缓存 哈希类型和关系型数据库的两点不同之处 缓存方式对比 Redis自身已经是键值对的结构了,Redis自身的键值对就…

顺序栈练习

顺序栈练习 相关内容&#xff1a; 1.判断顺序栈栈满的两种方式 2.一张图理解栈顶指针加加减减的问题 3.栈的顺序存储结构&#xff08;顺序栈&#xff09; //顺序栈的初始化、判空、入栈、出栈、读取栈顶元素 //顺序栈的结构&#xff1a;数组、栈顶指针(本质是下标) #include&…

【k8s】pod详解

一、Pod介绍 1、Pod的基础概念 Pod是kubernetes中最小的资源管理组件&#xff0c;Pod也是最小化运行容器化应用的资源对象&#xff0c;一个pod代表着集群中运行的一个进程。kubernetes中其它大多数组件都是围绕着pod来进行支持和扩展pod功能的。 例如&#xff0c;用于管理po…

最新ChatGPT商业运营系统源码+支持GPT4/支持ai绘画+支持Midjourney绘画

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

2023年【山东省安全员C证】考试内容及山东省安全员C证复审考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 山东省安全员C证考试内容是安全生产模拟考试一点通总题库中生成的一套山东省安全员C证复审考试&#xff0c;安全生产模拟考试一点通上山东省安全员C证作业手机同步练习。2023年【山东省安全员C证】考试内容及山东省安…

MYSQL体系结构总结

&#xff08;笔记整理自b站马士兵教育课程&#xff09; MYSQL总体分为服务层和存储引擎层。 一、服务层 功能&#xff1a; 1、连接&#xff1a;管理连接&#xff0c;权限验证。 2、解析器&#xff1a;词法分析&#xff0c;语法分析。 3、优化器&#xff1a;执行计划生成…

【漏洞复现】fastjson_1.2.24_unserializer_rce

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞检测3、漏洞验证 1.5、深度利用1、GetShell 说明内容漏洞编号漏洞名称fastjson 1.2.24 反序列化导致…

归并排序--C语言实现

1. 简述 归并排序的原理是将&#xff0c;两个较大的数组分为大小几乎一致的两个数组。 再将两个数组进行合并成新的有序数组。 合并两个数组的时候需要额外的一个数组的空间。 2. 实现 上图说明过程 代码 #include <stdio.h>void Merge(int *arr, int *tmp, int …

【漏洞复现】Apache_HTTPD_未知后缀名解析

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 upload-labs/Pass-07 上传1.php文件 <?php eval($_REQUEST[6868]);phpinfo();?>访问/upload/1.php.jaychou 蚁剑连接

Git https方式拉的代码IDEA推送代码报错

报错信息 fatal: could not read Username for ‘https://codehub-cn-south-1.devcloud.huaweicloud.com’: No such file or directory 18:18:39.885: [recovery_pattern] git -c credential.helper -c core.quotepathfalse -c log.showSignaturefalse push --progress --porc…

docker compose实现容器编排

Compose 使用的三个步骤&#xff1a; 使用 Dockerfile 定义应用程序的环境 使用 compose.yml 定义构成应用程序的服务&#xff0c;这样它们可以在隔离环境中一起运行 最后&#xff0c;执行 docker compose up 命令来启动并运行整个应用程序 为什么需要docker compose Dock…

【C++】多态 ⑫ ( 多继承 “ 弊端 “ | 多继承被禁用的场景 | 菱形继承结构的二义性 | 使用虚继承解决菱形继承结构的二义性 )

文章目录 一、多继承 " 弊端 "1、多继承被禁用的场景2、多继承弊端 二、代码示例 - 多继承弊端1、错误示例 - 菱形继承结构的二义性2、代码示例 - 使用虚继承解决菱形继承结构的二义性 一、多继承 " 弊端 " 1、多继承被禁用的场景 禁止使用多继承的场景 : …

C++ Qt 学习(二):常用控件使用与界面布局

1. Qt 布局详解 ui 设计器设计界面很方便&#xff0c;为什么还要手写代码&#xff1f; 更好的控制布局更好的设置 qss代码复用 完全不会写 Qt 布局&#xff0c;很麻烦&#xff0c;怎么学会手写布局&#xff1f; 看 Qt 自己怎么写改良 Qt 的布局写法 1.1 水平布局 #include …