Java Spring 是一个开源的全栈轻量级应用框架,可以通过 Spring 框架实现定时任务即在指定时间轮询执行某个任务或在固定时间执行某个任务。下面详细介绍一下 Java Spring 分别实现定时任务的方法:
1. Spring Schedule 注解方式
这种方法主要使用在方法上添加注解,从而使得方法在特定的时间点或者时间间隔执行。
在Spring项目中需要配置@EnableScheduling注解后才能使用。通常是一个被@ComponentScan注解的配置类。
示例1:
@Component
public class ScheduleTask {
@Scheduled(cron = "0 * * * * ?") // 每分钟执行一次
public void minuteJob() {
System.out.println("每分钟定时任务执行");
}
}
示例2:
@Slf4j
@Component
public class ScheduleTask {
/**
* 固定间隔任务
*/
@Scheduled(fixedRate = 5000)
public void fixedRateJob() {
log.info("固定间隔任务执行");
}
/**
* 固定延迟任务
*/
@Scheduled(fixedDelay = 5000)
public void fixedDelayJob() {
log.info("固定延迟任务执行");
}
}
2. Spring Quartz 组合方式
Quartz 是一个高级任务调度框架,它与 Spring 集成后,提供了一个基于 XML 的配置文件,可以无缝的 与Spring进行整合。
下面是实现步骤:
-
引入相关依赖,具体可以参考 Maven 依赖中心。其中,
org.quartz-scheduler
为 Quartz 核心依赖,org.springframework:spring-context-support
为 Spring 扩展支持包,其它依赖都为为 Spring 集成 Quartz 所需的依赖。 -
在配置文件中,插入 quartz 配置元素 scheduler,并配置 Quartz 自带的 SimpleTrigger 简单触发器相关属性。
-
初始化时启动任务定时器。
示例:
@Configuration
public class QuartzJobConfig {
private static final int MINUTE = 60; // 单位秒
private static final int INTERVAL = 3 * MINUTE; // 间隔时间为3分钟
/**
* 配置 Task 任务,并注册到bean中,交由 Spring 容器管理
*/
@Bean
public JobDetail taskJobDetail() {
return JobBuilder.newJob(TaskJob.class)
.withIdentity("taskJob", "taskJobGroup")
.storeDurably().build();
}
/**
* 触发器 Trigger,定时任务(2)的触发条件设置
*/
@Bean
public Trigger taskTrigger() {
SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(INTERVAL) // 间隔时间
.repeatForever();
return TriggerBuilder.newTrigger()
.forJob(taskJobDetail())
.withIdentity("taskTrigger", "taskTriggerGroup")
.withSchedule(scheduleBuilder)
.build();
}
@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
schedulerFactoryBean.setJobDetails(taskJobDetail());
schedulerFactoryBean.setTriggers(taskTrigger());
return schedulerFactoryBean;
}
}
以上便是 Java Spring 分别实现定时任务的方法。通过选择不同的方式,可以根据实际场景需求快速实现定时任务。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Spring分别实现定时任务方法 - Python技术站