springboot 整合quartz的例子
时间: 2023-08-13 14:03:00 浏览: 140
下面是一个示例,演示了如何在Spring Boot中整合Quartz框架:
1. 首先,在`pom.xml`文件中添加Quartz和Spring Boot的依赖:
```xml
<dependencies>
<!-- Quartz -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
</dependencies>
```
2. 创建一个继承自`QuartzJobBean`的定时任务类,实现具体的任务逻辑:
```java
@Component
public class MyJob extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
// 任务逻辑
System.out.println("定时任务执行:" + new Date());
}
}
```
3. 在`application.properties`或`application.yml`中配置Quartz的相关属性:
```properties
# Quartz配置
spring.quartz.job-store-type=jdbc
spring.quartz.jdbc.initialize-schema=always
spring.quartz.properties.org.quartz.scheduler.instanceName=myScheduler
spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO
spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
spring.quartz.properties.org.quartz.jobStore.tablePrefix=QRTZ_
spring.quartz.properties.org.quartz.jobStore.isClustered=false
```
4. 创建一个配置类,用于配置Quartz的调度器和任务触发器:
```java
@Configuration
public class QuartzConfig {
@Autowired
private ApplicationContext applicationContext;
@Bean
public JobDetail myJobDetail() {
return JobBuilder.newJob(MyJob.class)
.withIdentity("myJob")
.storeDurably()
.build();
}
@Bean
public Trigger myTrigger() {
CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
return TriggerBuilder.newTrigger()
.forJob(myJobDetail())
.withIdentity("myTrigger")
.withSchedule(scheduleBuilder)
.build();
}
@Bean
public SchedulerFactoryBean schedulerFactory(Trigger myTrigger) {
SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean();
schedulerFactory.setApplicationContext(applicationContext);
schedulerFactory.setTriggers(myTrigger);
return schedulerFactory;
}
}
```
5. 运行Spring Boot应用程序,Quartz将自动启动并执行定时任务。
在这个示例中,我们创建了一个名为`MyJob`的定时任务类,每5秒钟执行一次任务逻辑。`QuartzConfig`类用于配置Quartz的调度器和触发器。`application.properties`中的属性将Quartz配置为使用数据库存储任务信息。最后,通过启动Spring Boot应用程序,Quartz将自动启动并执行定时任务。
阅读全文