当前位置: 代码迷 >> 综合 >> Springoot 注解(Scheduled)式定时任务
  详细解决方案

Springoot 注解(Scheduled)式定时任务

热度:58   发布时间:2023-12-03 20:03:19.0

使用注解Scheduled创建定时任务

/*** 普通注解式定时任务 demo*/
@Component
public class ScheduledTaskAnnotationDemo {
    /*** 日志*/private static final Logger LOGGER = LoggerFactory.getLogger(ScheduledTaskAnnotationDemo.class);@Scheduled(cron = "0/2 * * * * ?")public void scheduledTask01() {
    LOGGER.info("注解式启动 task 01 当前线程 {} ", Thread.currentThread().getName());//此处调用需要执行的任务代码}@Scheduled(cron = "0/3 * * * * ?")public void scheduledTask02() {
    LOGGER.info("注解式启动 task 02 当前线程 {} ", Thread.currentThread().getName());//此处调用需要执行的任务代码 }
}

备注 :支持配置文件添加表达式
在这里插入图片描述

注意:
需要在启动类或者在定时任务类上加 @EnableScheduling 才会执行定时任务

@Scheduled 属性介绍

package org.springframework.scheduling.annotation;import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.scheduling.annotation.Schedules;@Target({
    ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(Schedules.class)
public @interface Scheduled {
    //根据cron表达式执行String cron() default "";//指定时间地区,默认系统时间地区String zone() default "";//上一次执行成功后多少毫秒后执行long fixedDelay() default -1L;//同上,只不过值是String形式String fixedDelayString() default "";//固定速率执行long fixedRate() default -1L;//同上,只不过值是String形式String fixedRateString() default "";//延迟多少毫秒后执行long initialDelay() default -1L;//同上,只不过值是String形式String initialDelayString() default "";
}

总结

优点:代码简单,适用于快速开发
缺点:
          1) 表达式写死,不利于扩展
          2)变更表达式,需要重启服务

  相关解决方案