精华内容
下载资源
问答
  • Spring Boot要使用定时任务,就要在启动类上加上@EnableScheduling注解,并且在某个方法上加上@Scheduled(cron = "0 0 1 * * ?"),其中cron表达式就不多说明了,而普通这种方式,注解中cron是没办法改变,不...

    Spring Boot定时器动态cron表达式,可自定义时间

    前言

    Spring Boot要使用定时任务,就要在启动类上加上@EnableScheduling注解,并且在某个方法上加上@Scheduled(cron = "0 0 1 * * ?"),其中的cron表达式就不多说明了,而普通的这种方式,注解中的cron是没办法改变的,不能自定义动态的,或者是数据库中去读取,不可配置;但Spring提供了一个接口:SchedulingConfigurer,实现接口重写方法就可以动态配置cron。

    代码

    import org.springframework.scheduling.Trigger;
    import org.springframework.scheduling.TriggerContext;
    import org.springframework.scheduling.annotation.SchedulingConfigurer;
    import org.springframework.scheduling.config.ScheduledTaskRegistrar;
    import org.springframework.scheduling.support.CronTrigger;
    import org.springframework.stereotype.Component;
    
    @Component
    public class DynamicCronSchedule implements SchedulingConfigurer {
    
        @Value("${sys.set.cron}")
        private String cron;
    
        @Override
        public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
            scheduledTaskRegistrar.addTriggerTask(new Runnable() {
                @Override
                public void run() {
                    // 定时器要做的功能,比如统计等等
                }
            }, new Trigger() {
                @Override
                public Date nextExecutionTime(TriggerContext triggerContext) {
                	// 我这里放在了配置文件里,模拟动态配置,也可以放在数据库中,动态修改
                    return new CronTrigger(cron).nextExecutionTime(triggerContext);
                }
            });
        }
    
    }
    
    展开全文
  • http://tangshuo.iteye.com/blog/184824表达式位数最少六位,如每天凌晨一点启动:"0 0 1 * * ?" 顺序按秒 分 时 日期 月份 星期 年份(可选) 排 字段允许值允许特殊字符 秒0-59,-*/ 分0-59,-*/ 小时0-23,-*...
    http://tangshuo.iteye.com/blog/184824 表达式位数最少六位,如每天凌晨一点启动:"0 0 1 * * ?"
    顺序按   秒 分 时 日期 月份 星期 年份(可选)  
     
    字段 允许值 允许的特殊字符 
    秒 0-59 , - * / 
    分 0-59 , - * / 
    小时 0-23 , - * / 
    日期 1-31 , - * ? / L W C 
    月份 1-12 或者 JAN-DEC , - * / 
    星期 1-7 或者 SUN-SAT , - * ? / L C # 
    年(可选) 留空, 1970-2099 , - * / 


    表达式 意义 
    "0 0 12 * * ?" 每天中午12点触发 
    "0 15 10 ? * *" 每天上午10:15触发 
    "0 15 10 * * ?" 每天上午10:15触发 
    "0 15 10 * * ? *" 每天上午10:15触发 
    "0 15 10 * * ? 2005" 2005年的每天上午10:15触发 
    "0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发 
    "0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发 
    "0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 
    "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发 
    "0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发 
    "0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发 
    "0 15 10 15 * ?" 每月15日上午10:15触发 
    "0 15 10 L * ?" 每月最后一日的上午10:15触发 
    "0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发 
    "0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发 
    "0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发 
    ===============================================================================

    秒(0~59)

    分钟(0~59)

    小时(0~23)

    天(月)(0~31,但是你需要考虑你月的天数)

    月(0~11)

    天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)

     

    一个完整的例子

    “0 0 12 ? * WED”表示每个星期三中午12点

     

    有些子表达式能包含一些范围或列表

    例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”

     

    “*”字符代表所有可能的值

    因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天

     

    “/”字符用来指定数值的增量

    例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟

             在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样

     

    “?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值

    当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”

     

    “L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写

    但是它在两个子表达式里的含义是不同的。

    在天(月)子表达式中,“L”表示一个月的最后一天

    在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT

    如果在“L”前有具体的内容,它就具有其他的含义了

    例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最一个星期五

    注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题 

    转载于:https://www.cnblogs.com/svennee/p/4078871.html

    展开全文
  • Spring定时器

    2020-02-11 21:36:40
    在web.xml下配置前端控制器模块配置 load-on-startup 值,使其大于0,保证项目启动的时候便能初始化Spring配置,如果不设置,就会导致定时器不执行,需要访问项目任意一个接口后才能执行 <!--配置前端控制...

    Spring定时器

    1. 初始化Spring
      在web.xml下的配置前端控制器的模块配置 load-on-startup 的值,使其大于0,保证项目启动的时候便能初始化Spring配置,如果不设置,就会导致定时器不执行,需要访问项目任意一个接口后才能执行

      <!--配置前端控制器-->
      <servlet>
          <servlet-name>springmvc</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          <!--默认找/WEB-INF/[servlet的名称(springmvc)]-servlet.xml-->
          <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:spring-mvc.xml</param-value>
          </init-param>
          <!--初始化Spring配置-->
          <load-on-startup>1</load-on-startup>
      </servlet>
      
    2. 在spring-mvc 配置文件中引用 task 的约束,并配置定时器和注解驱动

      	<!--定时器配置-->
          <task:annotation-driven scheduler="myScheduler" />
          <task:scheduler id="myScheduler" pool-size="5" />
      
    3. 在定时方法上配置定时注解,注意定时方法不能有参数

      	@Scheduled(cron = "0/5 * * * * ?")
          public void testSch1(){
              System.out.println("执行1");
          }
      

    cron表达式的编写规则

    cron表达式是一个字符串,以5个或者6个空格隔开,分为6个或者7个域,每一个域代表一个含义
    cron的语法格式

     - 秒 分 时 天 月 星期 年
     - 秒 分 时 天 月 星期
    
    • 秒:可以出现四种字符 “ , - * / ”,有效范围 0 - 59整数
    • 分:可以出现四种字符 “ , - * / ”,有效范围 0 - 59整数
    • 时:可以出现四种字符 “ , - * / ”,有效范围 0 - 23整数
    • 天:可以出现八种字符 “ , - * / ? L W C ”,有效范围 0 - 31整数
    • 月:可以出现四种字符“ , - * / ”,有效范围1-12整数或者 JAN - DEC
    • 星期:可以出现八种字符“ , - * / ? L C # ”四个字符,有效范围为 1 - 7的整数或者 SUN - SAT,1 表示星期天,2 表示星期一,依次类推
    • 年:可以出现“ , - * / ”四个字符,有效范围 1970 - 2099

    每一个域都使用数字,但也可以出现如下特殊字符:

    • *:匹配任意值,例如把 * 放在分钟上,指每分钟都执行
    • ?:只能在天和星期两个域用,也是匹配任意值的,一般天用*,则星期用?,天用?,则星期用*
    • -:表示范围,例如在分钟上使用 5 - 20,则表示从5分钟~20分钟,每分钟都触发一次
    • /:表示起始时间开始出发,往后每个固定时间出发一次,例如在分钟上使用 5 / 20,则表示5分钟开始触发,之后每隔20分钟再触发一次
    • ,:表示列出枚举类型,例如在分钟上使用 5,20,表示5分钟和20分钟分别触发一次
    • L:表示最后,只能出现在星期和天上,例如在星期上使用 5L,表示最后一个星期四触发
    • W:表示有效工作日(周一到周五),只能出现在天上,系统将会在离指定日期最近的工作日触发,例如5W,如果5号是星期六,则在星期五触发,如果5号是星期日,则在星期一触发,并且W找最近不会跨月
    • LW:在天上使用,指某月的最后一个工作日
    • #:指某个月第几个星期几,只能用在星期上,例如4#2,指某月的第二个星期三
    Demo
    每隔5秒执行一次:"*/5 * * * * ?"
    
    每隔1分钟执行一次:"0 */1 * * * ?"
    
    每天23点执行一次:"0 0 23 * * ?"
    
    每天凌晨1点执行一次:"0 0 1 * * ?"
    
    每月1号凌晨1点执行一次:"0 0 1 1 * ?"
    
    每月最后一天23点执行一次:"0 0 23 L * ?"
    
    每周星期天凌晨1点实行一次:"0 0 1 ? * L"
    
    在26分、29分、33分执行一次:"0 26,29,33 * * * ?"
    
    每天的0点、13点、18点、21点都执行一次:"0 0 0,13,18,21 * * ?"
    
    表示在每月的1日的凌晨2点调度任务:"0 0 2 1 * ? *"
    
    表示周一到周五每天上午10:15执行作业:"0 15 10 ? * MON-FRI" 
    
    表示2002-2006年的每个月的最后一个星期五上午10:15执行:"0 15 10 ? 6L 2002-2006"
    

    注意: 由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置

    0-59 , - * /
    0-59 , - * /
    0-23 , - * /
    1-31 , - * ? / L W C
    1-2或JAN-DEC , - * /
    星期 1-7或SUN_SAT , - * ? / L C #
    留空或1970-2099 , - * /

    如果想要让定时器在项目启动之前就执行一次,可以让类实现 InitializingBean 接口,并重写 afterPropertiesSet 方法

    import org.springframework.beans.factory.InitializingBean;
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Controller;
    
    @Controller
    public class JsonController implements InitializingBean {
    
        @Scheduled(cron = "0 0 0 1 * ?")
        public void testSch1(){
            System.out.println("执行1");
        }
    
    
        public void afterPropertiesSet() throws Exception {
            this.testSch1();
        }
    }
    
    展开全文
  • SpringBoot job定时器

    2019-07-25 14:45:26
    首先在你的启动类加上@EnableSchedduling注解 @Scheduled(cron = “0 0/10 8,20 * * ...在方法前加上 @Scheduled注解以及cron表达式,可以配置你需要在什么时候启动这个定时器,隔多久启动一次 常用cron表达式 ...

    首先在你的启动类加上@EnableSchedduling注解
    在这里插入图片描述
    @Scheduled(cron = “0 0/10 8,20 * * ? “)
    public void start(){
    //
    System.out.println(”=分配===”);
    }
    在方法前加上 @Scheduled注解以及cron表达式,可以配置你需要在什么时候启动这个定时器,隔多久启动一次
    在这里插入图片描述
    常用的cron表达式

    展开全文
  • java定时器

    2021-03-30 09:07:39
    启动类中加上注解 @EnableScheduling 需要定时执行方法注解 @Scheduled(cron = "0 0 1 * * *") public void uploadDeposit(){} 表达式 秒:可出现", - * /"四个字符,有效范围为0-59整数 分:可出现", - * /...
  • Spring 启动时加载定时器 执行点为 0 0 12 * * ? * 也就是每天12点执行 在11点左右修改为 0 0 14 * * ? * 也就是让它每天14点执行。 在12点多后又重新修改为 0 0 12 * * ? * 此时定时器立即执行了。 想知道是什么...
  • 用quartz做定时器,要求达到这样效果每天0点5分开始,以后每隔15分钟启动一次,23:50停止不知道怎么写哪个corn表达式0 5/15 0-23 * * * 以上是cron表达式,由于从5分开始,每15分钟执行一次,到了...
  • SpringCloud中@EnableScheduling踩坑

    千次阅读 2018-12-19 15:58:33
    ”)作为定时器触发,cron里面的表达式是设置具体的定时触发时间,有一次在本地测试的时候,先修改了本地时间,然后再启动项目,定时器死活触发不了,后来经过log日志的观察发现,程序在启动的时候,获取的时间已经...
  • Spring Scheduled定时任务

    2020-03-31 15:36:45
    使用Spring执行定时器 只需要引入Springcontext包即可 @Component //启动开启定时任务 @EnableScheduling public class HbaseFileReload { //执行任务周期 cron表达式 @Scheduled(cron = "0 0/1 * * * ?") ...
  • ")(记得在启动类加上注解@EnableScheduling),这样就已经实现了定时器的功能。 那么为什么还要用Quartz呢? Quartz更容易管理,在多任务时,更方便去动态配置,能实现动态关闭开启效果。 Quartz表达式(Cron) ...
  • 5.4.3 8255A工作方式--方式0 5.4.4 8255A工作方式--方式1 5.4.5 8255A工作方式--方式2 5.4.6 8255A方式控制字 5.4.7 8255A编程和应用举例 本章小结 第六章 中断控制器、计数器/定时器 本章前言 §...
  • JavaScript笔记

    2018-09-28 11:21:56
    --查找str中匹配正则表达式的关键字 | 返回:如果没找到,返回null。若找到,返回1个数组,数组每个元素是每个找到匹配关键 | |--str.replace(regExp,"替换值")--替换str中所有匹配关键字 | 强调:replace...
  • 1.在Uk为高电平期间,由555定时器构成的是什么电路,其输出U0的频率f0=? 2.分析由JK触发器FF1、FF2、FF3构成的计数器电路,要求:写出驱动方程和状态方程,画出完整的状态转换图; 3.设Q3、Q2、Q1的初态为000,Uk...
  • 7.1.1.1 定时器/计数器0定时器/计数器1 7.1.1.2 定时器/计数器2~定时器/计数器4 7.1.1.3 C8051F320 单片机的定时器/计数器3 7.1.1.3 利用Configuration Wizard获得C8051F320 单片机相关程序代码 7.1.2 程序...
  • powerbuilder

    2013-11-21 17:11:48
    由于PowerBuilder使用数值0(即ASCII码为0的字符)结束每个字符串,因此,如果打印控制序列中包含了数值0,应用程序需要使用其它字符在参数string中替代数值0,并用zerochar参数指明这个替代字符。一般来说,应该...
  • ET框架使用了类似守望先锋组件设计,所有服务端内容都拆成了一个个组件,启动时根据服务器类型挂载自己所需要组件。这有点类似电脑,电脑都模块化拆成了内存,CPU,主板等等零件,搭配不同零件就能组装成一...
  • 易语言 茶凉专用模块

    2010-05-04 12:26:36
    子程序 创建定时器, 整数型, 公开, 返回成功创建定时器的标志 .参数 窗口句柄, 整数型, 可空, 为空则为系统级定时器(通常为空) .参数 时钟周期, 整数型, , 毫秒级单位 1秒=1000毫秒 .参数 定时器事件处理, 子程序...
  • Java JDK实例宝典

    2016-06-16 19:27:14
    14 使用正则表达式验证电话号码格式 第6章 Java异常处理 6. 1 throw. throws. try和catch 6. 2 自定义异常类 6. 3 使用finally 6. 4 使用异常技巧与原则 第7章 IO——输入输出流 7...
  • getLauncherClassName : 获取app的启动活动名称 getAllApps : 获取系统中所有应用 getSDKVersion : 获取手机系统SDK版本 动画相关工具类 -> AnimationUtils.java            回到目录 ...
  • java范例开发大全(pdf&源码)

    热门讨论 2013-07-04 13:04:40
    实例35 除0发生算术异常(ArithmeticException) 54 实例36 数组下标越界异常(ArrayIndexOutOfBoundsException) 55 实例37 数组元素类型不匹配异常(ArrayStoreException) 56 实例38 强制类型转换异常...
  • Java范例开发大全 (源程序)

    热门讨论 2011-04-27 07:47:22
     实例35 除0发生算术异常(ArithmeticException) 54  实例36 数组下标越界异常(ArrayIndexOutOfBoundsException) 55  实例37 数组元素类型不匹配异常(ArrayStoreException) 56  实例38 强制类型转换...
  • Java JDK实例宝典(代码+清单)

    千次下载 热门讨论 2008-05-13 21:16:25
    14 使用正则表达式验证电话号码格式 第6章 Java异常处理 6. 1 throw. throws. try和catch 6. 2 自定义异常类 6. 3 使用finally 6. 4 使用异常技巧与原则 第7章 IO——输入输出流 7...
  • 14 使用正则表达式验证电话号码格式 第6章 Java异常处理 6. 1 throw. throws. try和catch 6. 2 自定义异常类 6. 3 使用finally 6. 4 使用异常技巧与原则 第7章 IO——输入输出流 7...
  • java范例开发大全源代码

    热门讨论 2011-10-30 23:31:51
     实例35 除0发生算术异常(ArithmeticException) 54  实例36 数组下标越界异常(ArrayIndexOutOfBoundsException) 55  实例37 数组元素类型不匹配异常(ArrayStoreException) 56  实例38 强制类型...
  • java范例开发大全

    2013-03-08 20:06:54
    实例35 除0发生算术异常(ArithmeticException) 54 实例36 数组下标越界异常(ArrayIndexOutOfBoundsException) 55 实例37 数组元素类型不匹配异常(ArrayStoreException) 56 实例38 强制类型转换异常...
  • 像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时动作等,都可在本源码中得以体现。 Java编写显示器显示模式检测程序 2个目标文件 内容...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时动作等,都可在本源码中得以体现。 Java编写显示器显示模式检测程序 2个目标文件 内容...

空空如也

空空如也

1 2
收藏数 37
精华内容 14
关键字:

启动定时器0的表达式