Spring Boot 面试热点
在Spring Boot中,有多种方式可以实现定时任务,以下是其中的几种方式:
- 使用
@Scheduled
注解:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTask {
@Scheduled(fixedRate = 5000)
public void performTask() {
System.out.println("Fixed rate task is executed");
}
}
- 使用
ScheduledAnnotationBeanPostProcessor
:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronSequenceGenerator;
@Configuration
@EnableScheduling
public class SchedulerConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(
// 定义执行任务内容
() -> System.out.println("Cron task is executed"),
// 设定cron时间触发规则
triggerContext -> new CronSequenceGenerator("*/5 * * * * ?").next(triggerContext.lastCompletionTime()).getTime()
);
}
}
- 使用
TaskScheduler
和TaskExecutor
:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
@Configuration
public class SchedulerConfig {
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(5);
scheduler.setThreadNamePrefix("my-scheduler-");
scheduler.initialize();
return scheduler;
}
}
这些方法可以用来在Spring Boot应用中实现定时任务的需求。
评论已关闭