SpringBoot定时任务

SpringBoot定时任务

SpringBoot定时任务

定时任务配置

@Configuration
@EnableScheduling
public class SchedulingConfig {
    private final Logger logger = LoggerFactory.getLogger(getClass());

    @Resource
    private OrderInfoService orderInfoService;

    @Scheduled(cron = "0/5 * * * * ?") // 每5秒执行一次
    public void checkOrderResult() {
        logger.info("checkOrderResult定时任务启动");
        orderInfoService.checkOrderResult();
    }
}


启动类如果没有配置@EnableAutoConfiguration 需要加上 @EnableScheduling


cron表达式

     字段                               允许值                             允许的特殊字符


0-59
, - * /

0-59
, - * /
小时
0-23
, - * /
日期
1-31
, - * ? / L W C
月份
1-12 或者 JAN-DEC
, - * /
星期
1-7 或者 SUN-SAT
, - * ? / L C #
年(可选)
留空, 1970-2099
, - * /


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

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


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


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

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

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

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