栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java > SpringBoot

Spring Boot 定时器(九)

SpringBoot 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot 定时器(九)

配置主要是添加注解的方式进行

1、在启动类Application.class中添加注解

@MapperScan("com.example.myjpa.dao")//mybatis的注解
@EnableScheduling//定时器注解

@SpringBootApplication@EnableSchedulingpublic class MyApplication {    public static void main(String[] args) {
        SpringApplication.run(MyjpaApplication.class, args);
    }
}

2、创建ScheduledTasks.class做定时任务,添加注解

@Configuration //1.主要用于标记配置类,兼备Component的效果。
@EnableScheduling // 2.开启定时任务

@Configuration //1.主要用于标记配置类,兼备Component的效果。@EnableScheduling // 2.开启定时任务public class ScheduledTasks {    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");     //表示定时器时间定义方式
     //@Scheduled(cron = "0/5 * * * * ?")
     //@Scheduled(fixedRate = 1000 * 60)
    @Scheduled(cron = "0 0/2 * * * ?")    public void configureTasks() {
        System.out.println("The time is now " + dateFormat.format(new Date()));
    }
}

3、创建config定时器配置CompleteScheduleConfig.class,添加注解

@Configuration
@EnableScheduling

@Configuration@EnableSchedulingpublic class CompleteScheduleConfig implements SchedulingConfigurer {    @Autowired
    StudentRepository studentRepository;    private static String DEFAULT_CRON = "0 0/2 * * * ?";//表示间隔2分钟

    @Override
    public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {//        scheduledTaskRegistrar.scheduleFixedDelayTask(new FixedDelayTask(() -> {////        }, 10000, 1000 * 60));

        scheduledTaskRegistrar.addTriggerTask(() -> {
            Student student = new Student();
            student.setName("ok");
            student.setAge(12);
            student.setSex("nan");
            studentRepository.save(student);
            System.out.println("===插入成功!===");
        }, triggerContext -> {            return new CronTrigger(DEFAULT_CRON).nextExecutionTime(triggerContext);
        });
    }
}
  • :这个案例主要是通过定时利用JPA操作数据的方式进行代码编写案例(案例是进行每隔2分钟就插入一条数据),在开发项目中假如数据刷新我们可以用定时任务完成、股票类数据刷新等等。所以定时任务在后台任务中也是一个重点。

cron表达式

大家可以进入这里测试cron在线表达式生成工具
本篇案例中"0 0/2 * * * ?"是表示每个2分钟运行一次。

  • 认识cron表达式

名词范围表达式
0-59- * /
0-59- * /
0-23- * /
日期1-31- * ? / L W C
星期1-7或者 SUN-SAT- * ? / L C #
年(非必填)1970-2099- * /
  • 字符解析

表达式字符注释
?表示所有值、不确定的值
,表示附加数个可能的值
-表示指定值的范围
/表示指定从哪个值开始,然后按照哪个值进行递增,如i/j表示从i开始,每次按照j值进行递增
L,late简写表示在日时是这个最后一天,在周期时是表示这个月最后一个星期几
W weekday简写表示离给定日期最近的工作日(周一到周五)
#表示这个月第几个周几,如:6#3表示这个月第3个周五(6表示周五,3表示的是第3个)
  • 举例

表达式注解
"0/1000 * * * * ?"每1000秒执行一次
*/1000 * * * * ?每隔1000秒执行一次
"0 0 10 * * ?"每天10点整执行一次
0 0 5-15 * * ?每天5-15点整点执行一次
0 0/30 9-18 * * ?早上9点到下午18点工作时间内每半小时执行一次
0 0 12 ? * WED每个星期三中午12点执行
0 0 18 ? * TUES,THUR,SAT每周二、四、六下午6点执行一次
"20,30,40 * * * * ?"每20秒,30秒,40秒时执行一次
"0 15 10 L * ?"表示每个月最后一天的10点15分0秒执行一次
"0 15 10 LW * ?"表示每个月最后一个工作日的10点15分0秒执行一次



作者:eirunye
链接:https://www.jianshu.com/p/c00f0b5b54a0


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/235598.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号