Springoot 注解(Scheduled)式定时任务

使用注解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)变更表达式,需要重启服务

猜你喜欢

转载自blog.csdn.net/qq_38011415/article/details/85224556