cronexpression

quartz CronExpression表达式

梦想的初衷 提交于 2019-11-30 20:50:17
一个cron表达式有至少6个(或7个)由空格分隔的时间元素。 按顺序依次为: 1、秒(0~59) 2、分(0~59) 3、时(0~23) 4、日(0~31,但需要考虑指定月的天数) 5、月(0~11) 6、周(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) 7、年(1970-2099) 其中每个元素可以是一个值(如6)、一个连续区间(9-12)、一个间隔时间(8-18/4)(/表示每隔4小时)、一个列表(1,3,5)或通配符。 “*”字符代表所有可能的值因此,“*”在子表达式“月”中表示每个月的含义,“*”在子表达式“周”中表示星期的每一天。 由于"月份中的日期"和"周中的日期"这两个元素互斥的,必须要对其中一个设置?. 有些子表达式能包含一些范围或列表例如:子表达式“周”可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT” “/”字符用来指定数值的增量例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟; 在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样; “?”字符仅被用于天(月)和天(周)两个子表达式中,表示不指定值当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”; “L” 字符仅被用于天(月)和天(周

关于Spring定时任务(定时器)用法

﹥>﹥吖頭↗ 提交于 2019-11-29 23:34:14
Spring定时任务的几种实现 博客分类: spring框架 quartz spring spring-task 定时任务 注解 Spring定时任务的几种实现 近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,所以我都将结合 spring框架来介绍。 一.分类 从实现的技术上来分类,目前主要有三种技术(或者说有三种产品): Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少,这篇文章将不做详细介绍。 使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂,稍后会详细介绍。 Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,稍后会介绍。 从作业类的继承方式来讲,可以分为两类: 作业类需要继承自特定的作业类基类,如Quartz中需要继承自org.springframework.scheduling.quartz.QuartzJobBean;java.util.Timer中需要继承自java.util

compare Cron Expression with current time

∥☆過路亽.° 提交于 2019-11-29 15:45:19
I am designing a scheduler and using quartz library. I want to check whether cron expression time refer to the time in the future, Otherwise trigger won't be executed at all. Is there any way of comparing cron expression time with current time in java. Something to consider is that a standard valid cron expression will always refer to a valid time in the future. The one caveat to this is that Quartz cron expressions may include an optional year field, which could be in the past as well as the future. To check the validity of the expression, you can build a CronExpression instance then ask it

spring 配置触发器 ----可以定时的自动运行某些东西

牧云@^-^@ 提交于 2019-11-29 09:59:26
在Spring中配置Quartz 前面介绍过了Timer在Spring中的实现,今天接前文介绍Quartz在Spring中的配置. 而Quartz类库不但有着上述JDK的Timer类库类似的配置,更重要的,它还有着类似于unix的cron服务的配置; 正是基于cron服务的配置使Quartz能方便、清晰指定启动时间,让开发者更青睐于它。 在调度方式上,不同于Timer,Quartz可以通过两种方式来调度程序:一是使用Spring提供的 MethodInvokingJobDetailFactoryBean代理类,Quartz通过该代理类直接调度任务类的某个函数;二是任务类继承并实现Quartz接口,Quartz通过该接口进行调度。如果采用第一种方式,即由Quartz直接调度任务类的某个接口,那么,业务类是不必进行任何修改的。我们的业务类大概如下: public class OpenVirtualService { public void open(){ //虚机开通 //业务逻辑 } } 第一步,在Spring配置文件中增加本业务类 <bean id="openVirtualService" class="com.stone.product.virtual.service.OpenVirtualService"/> 第二步,定义任务

Spring 中的 BeanFactory 与 FactoryBean

核能气质少年 提交于 2019-11-29 08:30:30
  1.前提概要      很多java开发者在使用Spring框架中都见过后缀为FactoryBean的类,比如Mybatis-Spring中的SqlSessionFactoryBean。说到这里就不得不提BeanFactory。FactoryBean和BeanFactory特别容易让人混淆,面试还经常问到这两种概念。其实它们的作用和使用场景是不一样的      2.BeanFactory      先来说说BeanFactory。 用于访问Spring bean容器的根接口。这是Spring bean容器的基本客户端视图。原来是获取Spring Bean的接口,也就是IoC容器。然后我们看类图      原来我们更常用的ApplicationContext就是一个BeanFactory。我们通过bean的名称或者类型都可以从BeanFactory来获取bean。对于BeanFactory这么介绍相信都不陌生了。让我们把关注点转向FactoryBean上。      3.FactoryBean      FactoryBean 是个什么玩意儿呢?来看看源码      public interface FactoryBean<T> {      @Nullable      T getObject() throws Exception;      @Nullable     

Spring定时任务的几种实现

纵然是瞬间 提交于 2019-11-29 00:25:20
Spring定时任务的几种实现 近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,所以我都将结合 spring框架来介绍。 一.分类 从实现的技术上来分类,目前主要有三种技术(或者说有三种产品): Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少,这篇文章将不做详细介绍。 使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂,稍后会详细介绍。 Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,稍后会介绍。 从作业类的继承方式来讲,可以分为两类: 作业类需要继承自特定的作业类基类,如Quartz中需要继承自org.springframework.scheduling.quartz.QuartzJobBean;java.util.Timer中需要继承自java.util.TimerTask。 作业类即普通的java类,不需要继承自任何基类。 注:个人推荐使用第二种方式,因为这样所以的类都是普通类

Spring定时任务的几种实现方式

白昼怎懂夜的黑 提交于 2019-11-28 23:01:53
近日项目开发中需要执行一些定时任务,比如需要在每天凌晨更新当天签到状态为未签到。从网上找了找 ,觉得这篇总结的较为详尽,就先转载下方便以后查阅。感谢原作者的归纳和分享。 一.分类 从实现的技术上来分类,目前主要有三种技术(或者说有三种产品): Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少,这篇文章将不做详细介绍。 使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂,稍后会详细介绍。 Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,稍后会介绍。 从作业类的继承方式来讲,可以分为两类: 作业类需要继承自特定的作业类基类,如Quartz中需要继承自org.springframework.scheduling.quartz.QuartzJobBean;java.util.Timer中需要继承自java.util.TimerTask。 作业类即普通的java类,不需要继承自任何基类。 注:个人推荐使用第二种方式,因为这样所以的类都是普通类,不需要事先区别对待。 从任务调度的触发时机来分

Quartz在Spring中动态设置cronExpression (spring设置动态定时任务)

倖福魔咒の 提交于 2019-11-28 23:01:06
什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定)。 这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许客户修改配置文件,但总需要重新启动web服务啊,研究了下Quartz在Spring中的动态定时,发现<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean" > <property name="jobDetail" ref="schedulerJobDetail"/> <property name="cronExpression"> <value>0/10 * * * * ?</value> </property> 中 cronExpression是关键,如果可以动态设置cronExpression的值,也就说如果我们可以直接调用CronTriggerBean中设置cronExpression的方法,就可以顺利解决问题了。 熟悉1的朋友可以跳过不看,下面2、3是动态定时任务的具体实现。 1. Quartz在Spring中的简单配置 Spring配置文件: <bean id="schedulerJobDetail" class="org.springframework.scheduling

Quartz+Spring Boot实现动态管理定时任务

梦想与她 提交于 2019-11-28 07:39:36
在实践中遇到动态管理定时任务的需求,场景通常是动态添加、更新、删除任务,借助Quartz,可方便实现功能。 以下使用Quartz结合Spring Boot方式使用。 POM依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId>

Spring cron expression for every day 1:01:am

眉间皱痕 提交于 2019-11-26 23:24:12
I'm trying to have my code execute on a fixed schedule, based on a Spring cron expression. I would like the code to be executed every day at 1:01:am. I tried the following expression, but this didn't fire up for me. What's wrong with the syntax here? @Scheduled(cron = "0 1 1 ? * *") public void resetCache() { // ... } gipinani Try with: @Scheduled(cron = "0 1 1 * * ?") Below you can find the example patterns from the spring forum: * "0 0 * * * *" = the top of every hour of every day. * "*/10 * * * * *" = every ten seconds. * "0 0 8-10 * * *" = 8, 9 and 10 o'clock of every day. * "0 0 8,10 * *