在 Spring Boot 中,你可以使用 @Scheduled 注解或者实现 SchedulingConfigurer 接口来实现定时任务。以下是两种方式的简单示例:

1. 使用 @Scheduled 注解:

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class MyScheduledTask {

    @Scheduled(fixedRate = 5000) // 每隔5秒执行一次
    public void myFixedRateTask() {
        System.out.println("Fixed Rate Task executed at " + System.currentTimeMillis());
    }

    @Scheduled(cron = "0 0/1 * * * ?") // 每分钟执行一次
    public void myCronTask() {
        System.out.println("Cron Task executed at " + System.currentTimeMillis());
    }
}

在上面的例子中,通过 @Scheduled 注解标注的方法 myFixedRateTaskmyCronTask 将会按照指定的时间间隔执行任务。fixedRate 属性表示任务执行的时间间隔,cron 属性使用 Cron 表达式来定义执行的时间规则。

2. 实现 SchedulingConfigurer 接口:

import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;

@Configuration
@EnableScheduling
public class MySchedulingConfigurer implements SchedulingConfigurer {

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.addFixedRateTask(() -> {
            System.out.println("Fixed Rate Task executed at " + System.currentTimeMillis());
        }, 5000);

        taskRegistrar.addCronTask(() -> {
            System.out.println("Cron Task executed at " + System.currentTimeMillis());
        }, "0 0/1 * * * ?");
    }
}

上述例子中,通过实现 SchedulingConfigurer 接口并重写 configureTasks 方法,手动配置了定时任务。addFixedRateTaskaddCronTask 方法分别用于添加按照固定时间间隔和 Cron 表达式执行的任务。

选择哪种方式取决于你的喜好和项目需求。使用 @Scheduled 注解更为简单,适用于简单的定时任务需求。如果需要更灵活的配置或者动态地添加定时任务,可以选择实现 SchedulingConfigurer 接口。

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.