Spring Boot定时器创建及使用解析
创建定时器
因为项目需要定时在后端执行任务刷新数据,不需要从前端调用接口,所以需要使用定时器。基于注解方式@Scheduled默认为单线程。
package com.ruanshuai.demo.util; import com.ruanshuai.demo.config.ConfigConsts; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; /** * @author ruanshuai * @date 2019/10/30 */ @Component @EnableScheduling public class TestSchedule { @Scheduled(fixedDelay = ConfigConsts.TEN_SECONDS) public void test(){ System.out.println("定时任务执行开始!"); System.out.println("这是一个定时任务!"); System.out.println("定时任务执行结束!"); } }
其中TEN_SECONDS表示10秒,定时器任务每10秒钟自动执行一个。
各种时间表示如下:
- 1 * 1000表示1秒;
- 60 * 1 * 1000表示1分钟;
- 60 * 60 * 1 * 1000表示1小时;
- 24 * 60 * 60 * 1 * 1000表示1天;
依此类推
package com.ruanshuai.demo.config; /** * @author ruanshuai * @date 2019/10/30 */ public class ConfigConsts { public static final long TEN_SECONDS = 10 * 1 * 1000; }
启动测试
启动项目,定时器任务在项目启动时执行一次,之后每隔10秒自动执行一次。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
springboot实现多实例crontab抢占定时任务(实例代码)
github: https://github.com/jiasion/eslog wechat:minghui-666 利用redisson实现多实例抢占定时任务 pom.xml <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.12.0</version> </dependency>
-
Spring Boot监听Redis Key失效事件实现定时任务的示例
业务场景 我们以订单功能为例说明下: 生成订单后一段时间不支付订单会自动关闭.最简单的想法是设置定时任务轮询,但是每个订单的创建时间不一样,定时任务的规则无法设定,如果将定时任务执行的间隔设置的过短,太影响效率. 还有一种想法,在用户进入订单界面的时候,判断时间执行相关操作.方式可能有很多,在这里介绍一种监听 Redis 键值对过期时间来实现订单自动关闭. 实现思路 在生成订单时,向 Redis 中增加一个 KV 键值对,K 为订单号,保证通过 K 能定位到数据库中的某个订单即可,V 可为任意值
-
Spring boot如何通过@Scheduled实现定时任务及多线程配置
这篇文章主要介绍了Spring boot如何通过@Scheduled实现定时任务及多线程配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用@Scheduled 可以很容易实现定时任务 spring boot的版本 2.1.6.RELEASE package com.abc.demo.common; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.spr
-
springBoot 创建定时任务过程详解
前言 好几天没写了,工作有点忙,最近工作刚好做一个定时任务统计的,所以就将springboot 如何创建定时任务整理了一下. 总的来说,springboot创建定时任务是非常简单的,不用像spring 或者springmvc 需要在xml 文件中配置,在项目启动的时候加载.spring boot 使用注解的方式就可以完全支持定时任务. 不过基础注解的话,可能有的需求定时任务的时间会经常变动,注解就不好修改,每次都得重新编译,所以想将定时时间存在数据库,然后项目读取数据库执行定时任务,所以就有了基
-
SpringBoot定时任务参数运行代码实例解析
@Scheduled注解各参数详解 cron 该参数接收一个cron表达式,cron表达式是一个字符串,字符串以5或6个空格隔开,分开共6或7个域,每一个域代表一个含义. cron表达式语法 [秒] [分] [小时] [日] [月] [周] [年] 注:[年]不是必须的域,可以省略[年],则一共6个域 序号 说明 必填 允许填写的值 允许的通配符 1 秒 是 0-59 , - * / 2 分 是 0-59 , - * / 3 时 是 0-23 , - * / 4 日 是 1-31 , - *
-
Spring Boot中配置定时任务、线程池与多线程池执行的方法
配置基础的定时任务 最基本的配置方法,而且这样配置定时任务是单线程串行执行的,也就是说每次只能有一个定时任务可以执行,可以试着声明两个方法,在方法内写一个死循环,会发现一直卡在一个任务上不动,另一个也没有执行. 1.启动类 添加@EnableScheduling开启对定时任务的支持 @EnableScheduling @SpringBootApplication public class TestScheduledApplication extends SpringBootServletInit
-
SpringBoot集成Quartz实现定时任务的方法
1 需求 在我的前后端分离的实验室管理项目中,有一个功能是学生状态统计.我的设计是按天统计每种状态的比例.为了便于计算,在每天0点,系统需要将学生的状态重置,并插入一条数据作为一天的开始状态.另外,考虑到学生的请假需求,请假的申请往往是提前做好,等系统时间走到实际请假时间的时候,系统要将学生的状态修改为请假. 显然,这两个子需求都可以通过定时任务实现.在网上略做搜索以后,我选择了比较流行的定时任务框架Quartz. 2 Quartz Quartz是一个定时任务框架,其他介绍网上也很详尽.这里要介
-
Spring boot基于ScheduledFuture实现定时任务
一. 背景 接上一篇,完成存储过程的动态生成后,需要构建定时任务执行存储过程 二. 环境 1.此随笔内容基于spring boot项目 2.数据库为mysql 5.7.9版本 3.jdk 版本为1.8 三. 内容 1.定义接口和接口参数bean: 1)在上一篇博客bean 的基础上把接口配置参数bean修改一下,添加一个配置参数值和排序字段:在添加一个监测项的bean,想查看其他的bean信息,请移步 @Entity @Table(name="monitor_warn_item") p
-
Spring Boot定时器创建及使用解析
创建定时器 因为项目需要定时在后端执行任务刷新数据,不需要从前端调用接口,所以需要使用定时器.基于注解方式@Scheduled默认为单线程. package com.ruanshuai.demo.util; import com.ruanshuai.demo.config.ConfigConsts; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.sched
-
spring boot jar的启动原理解析
1.前言 近来有空对公司的open api平台进行了些优化,然后在打出jar包的时候,突然想到以前都是对spring boot使用很熟练,但是从来都不知道spring boot打出的jar的启动原理,然后这回将jar解开了看了下,与想象中确实大不一样,以下就是对解压出来的jar的完整分析. 2.jar的结构 spring boot的应用程序就不贴出来了,一个较简单的demo打出的结构都是类似,另外我采用的spring boot的版本为1.4.1.RELEASE网上有另外一篇文章对spring
-
Spring Boot启动流程断点过程解析
这篇文章主要介绍了Spring Boot启动流程断点过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 启动入口 跟进run方法 : 一个用来使用默认的配置从特定的源运行SpringApplication的静态帮助类. 这个类有两个重载方法,另一个用来传入多个源.通常,单个参数方法是数组方法的一个特例 创建一个新的SpringApplication实例.这个应用程序上下文会从特定的源加载Beans,这个实例会在调用run方法之前被定制化.
-
spring boot 2整合swagger-ui过程解析
这篇文章主要介绍了spring boot 2整合swagger-ui过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.添加mvn依赖 修改pom.xml加入 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.5.0</v
-
Spring Boot使用过滤器Filter过程解析
这篇文章主要介绍了Spring Boot使用过滤器Filter过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先我们说说什么是过滤器,过滤器是对数据进行过滤,预处理过程,当我们访问网站时,有时候会发布一些敏感信息,发完以后有的会用*替代,还有就是登陆权限控制等,一个资源,没有经过授权,肯定是不能让用户随便访问的,这个时候,也可以用到过滤器.过滤器的功能还有很多,例如实现URL级别的权限控制.压缩响应信息.编码格式等等. 过滤器依赖se
-
JSP 开发之Spring Boot 动态创建Bean
JSP 开发之Spring Boot 动态创建Bean 1.通过注解@Import导入方式创建 a.新建MyImportBeanDefinitionRegistrar注册中心 Java代码 import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.GenericBeanDefinition; import org
-
Spring Boot 文件上传原理解析
首先我们要知道什么是Spring Boot,这里简单说一下,Spring Boot可以看作是一个框架中的框架--->集成了各种框架,像security.jpa.data.cloud等等,它无须关心配置可以快速启动开发,有兴趣可以了解下自动化配置实现原理,本质上是 spring 4.0的条件化配置实现,深抛下注解,就会看到了. 说Spring Boot 文件上传原理 其实就是Spring MVC,因为这部分工作是Spring MVC做的而不是Spring Boot,那么,SpringMVC又是怎么
-
Spring Boot 整合 Shiro+Thymeleaf过程解析
这篇文章主要介绍了Spring Boot 整合 Shiro+Thymeleaf过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.导包 <!-- springboot 与 shiro 的集成--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <
-
Spring Boot Logback配置日志过程解析
这篇文章主要介绍了Spring Boot Logback配置日志过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 出于性能等原因,Logback 目前是springboot应用日志的标配: 当然有时候在生产环境中也会考虑和三方中间件采用统一处理方式. 配置时考虑点 支持日志路径,日志level等配置 日志控制配置通过application.yml下发 按天生成日志,当天的日志>50MB回滚 最多保存10天日志 生成的日志中Pattern自
-
Spring Boot定时+多线程执行过程解析
这篇文章主要介绍了Spring Boot定时+多线程执行过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Spring Boot 定时任务有多种实现方式,我在一个微型项目中通过注解方式执行定时任务. 具体执行的任务,通过多线程方式执行,单线程执行需要1小时的任务,多线程下5分钟就完成了. 执行效率提升10倍以上,执行效率提升10倍以上,执行效率提升10倍以上. 重要的事情说三遍! 本文不深入介绍具体的原理,大家如果要实现类似的功能,只需要
随机推荐
- 实例讲解Java的Spring框架中的控制反转和依赖注入
- Linux下编写Lua扩展so文件和调用方法实例
- vue.js 上传图片实例代码
- Linux网络相关配置文件
- Python中的包和模块实例
- 微信小程序-详解微信登陆、微信支付、模板消息
- JS简单限制textarea内输入字符数量的方法
- IIS7伪静态web.config配置的方法和规则
- asp.net 上传下载输出二进制流实现代码
- javascript中字符串拼接需注意的问题
- pycharm安装图文教程
- Python类属性的延迟计算
- 深入分析C++派生类中的保护成员继承
- Android开发实现图片圆角的方法
- MySQL下的RAND()优化案例分析
- jQuery 使用手册(二)
- windows下mongodb安装与使用图文教程(整理)
- Android自带emoji表情的使用方法详解
- Java 向上转型和向下转型的详解
- c#编写的高并发数据库控制访问代码