您好,欢迎访问一九零五行业门户网

怎么用SpringBoot实现定时器

定时器的实现spring boot启动类代码,加入了@enablescheduling注解来开启定时器功能
@springbootapplication @enablescheduling // 开启定时功能public class application { public static void main(string[] args) { springapplication.run(application.class,args); }}
调度任务代码,需要通过@component注解将任务类注入到ioc容器中
@componentpublic class testschedulingtask { // 这个cron表达式代表从0秒开始,每过3秒执行一次。 @scheduled(cron = "0/3 * * * * ?") public void test(){ // 大家可以根据公司的业务来实现,更希望是@autowrite注入service层的接口,业务逻辑写在service层中。 // 这里测试我就输出当前系统时间了... date date = new date(system.currenttimemillis()); string rule = "yyyy-mm-dd hh:mm:ss"; simpledateformat simpledateformat = new simpledateformat(rule); string format = simpledateformat.format(date); system.out.println(format); }}
这里注意每个任务方法都要加上@scheduled注解,并且规定好cron表达式。
完全可以放心,并且网上也有在线生成cron表达式的网站,我们来看看控制台输出的结果吧。
cron表达式详解cron表达式
字段 范围 允许的字符
秒(second) 0-59 ,/-*
分(minute) 0-59 ,/-*
小时(hour) 0-23 ,/-*
日期(day of month) 1-31(需要考虑月份不一致) ,/-*?lw
月份(month) 1-12(对应的英文缩写也行) ,/-*
星期(day of week) 1-7 ,/-*?l
年(year) 这玩意基本用不到 这玩意基本用不到
允许的字符的解释:
,:算是一个枚举,多值的存在,比如second中5,20就代表5和20秒的时候触发。
/:值1/值2,值1代表开始时间,值2代表隔多久一次,比如我案例中就是从0秒开始3秒触发一次。
-:范围值,从多久到多久。
*:全部范围通用。
?:只存在于日期和星期中,假如你想要每个月2号触发,但是你星期用*就会每天都会触发,就会产生bug,所以需要?来代替*。
l:表示最后的意思,出现在日期和星期中,比如在日期中使用l就代表当月最后一天,在星期中使用3l就代表最后一个星期三触发。
w:表示工作日,在日期中使用,假如使用9w,如果9号是星期1-5就直接触发,如果9号是星期六就8号触发,如果9号是星期天就星期一触发也就是10号触发。
以上就是怎么用springboot实现定时器的详细内容。
其它类似信息

推荐信息