若依学习——定时任务代码逻辑 详细梳理(springboot整合Quartz)
在Spring Boot整合Quartz进行定时任务的实现时,主要涉及到以下几个步骤:
- 添加依赖:在
pom.xml
中添加Quartz的依赖。 - 配置Quartz:在
application.properties
或application.yml
中配置Quartz属性。 - 创建Job:实现
QuartzJobBean
或使用@Job
注解的类。 - 配置JobDetail和Trigger:使用
@Configuration
配置定时任务的详细信息。 - 启动调度:使用
SchedulerFactoryBean
来启动调度器。
以下是一个简单的示例代码:
// 1. 添加依赖(pom.xml)
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
// 2. 配置Quartz(application.properties)
spring.quartz.job-store-type=memory
spring.quartz.properties.org.quartz.scheduler.instanceName=my-quartz-scheduler
spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO
// 3. 创建Job
public class SampleJob extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
// 定时任务的逻辑
System.out.println("SampleJob is running...");
}
}
// 4. 配置JobDetail和Trigger(ScheduleConfig.java)
@Configuration
public class ScheduleConfig {
@Bean
public JobDetail sampleJobDetail() {
return JobBuilder.newJob(SampleJob.class)
.withIdentity("sampleJob")
.usingJobData("name", "world")
.storeDurably()
.build();
}
@Bean
public Trigger sampleJobTrigger() {
SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(10)
.repeatForever();
return TriggerBuilder.newTrigger()
.forJob(sampleJobDetail())
.withIdentity("sampleTrigger")
.withSchedule(scheduleBuilder)
.build();
}
}
// 5. 启动调度(SpringBoot启动类或配置类)
@SpringBootApplication
public class QuartzApplication {
public static void main(String[] args) {
SpringApplication.run(QuartzApplication.class, args);
}
}
在这个例子中,我们创建了一个简单的定时任务SampleJob
,该任务每10秒执行一次,并打印出信息。在配置类ScheduleConfig
中,我们定义了JobDetail
和Trigger
的详细信息,最后在Spring Boot启动类中启动了调度器。
评论已关闭