spring boot 使用Quartz
时间: 2023-11-20 18:13:50 浏览: 88
在 Spring Boot 中使用 Quartz 非常简单,只需要按照以下步骤:
1. 添加依赖
在 pom.xml 文件中添加 Quartz 依赖:
```xml
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
```
2. 配置 Quartz
在 Spring Boot 应用程序中,可以通过 `@Bean` 注解将 Quartz 配置为 Spring Bean。在配置文件中,可以使用 `quartz.properties` 文件或者直接使用 Java 代码进行配置。
以下是使用 Java 代码配置 Quartz 的示例:
```java
@Configuration
public class QuartzConfig {
@Bean
public JobDetail jobDetail() {
return JobBuilder.newJob().ofType(MyJob.class).storeDurably().withIdentity("MyJob").withDescription("My Job").build();
}
@Bean
public Trigger trigger(JobDetail job) {
return TriggerBuilder.newTrigger().forJob(job).withIdentity("MyTrigger").withDescription("My Trigger").withSchedule(CronScheduleBuilder.cronSchedule("0 0/5 * * * ?")).build();
}
@Bean
public Scheduler scheduler(Trigger trigger, JobDetail job, DataSource dataSource) throws SchedulerException {
StdSchedulerFactory factory = new StdSchedulerFactory();
factory.initialize();
Scheduler scheduler = factory.getScheduler();
scheduler.setJobFactory(springBeanJobFactory());
scheduler.getContext().put("dataSource", dataSource);
scheduler.scheduleJob(job, trigger);
scheduler.start();
return scheduler;
}
@Bean
public SpringBeanJobFactory springBeanJobFactory() {
return new SpringBeanJobFactory();
}
}
```
在上面的示例中,定义了一个 `MyJob` 类,该类实现了 `org.quartz.Job` 接口。然后使用 `JobBuilder` 创建 `JobDetail` 对象,并将 `MyJob` 类型指定为 Job 类型。接下来,使用 `TriggerBuilder` 创建 `Trigger` 对象,并将其与 `JobDetail` 绑定。最后,创建一个 `Scheduler` 对象,并将 `JobDetail` 和 `Trigger` 对象传递给它,并启动调度器。
3. 创建 Job 类
在上面的示例中,我们定义了一个 `MyJob` 类,用于执行需要定时执行的任务。以下是 `MyJob` 类的示例代码:
```java
public class MyJob implements Job {
private static final Logger logger = LoggerFactory.getLogger(MyJob.class);
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
logger.info("Executing My Job ...");
// 执行需要执行的任务
}
}
```
4. 测试
现在,我们已经完成了 Quartz 的配置和 Job 类的创建。我们可以启动应用程序并等待定时任务的执行。如果一切正常,应该会看到类似以下的输出:
```
INFO c.e.q.MyJob - Executing My Job ...
```
这就是使用 Quartz 在 Spring Boot 中执行定时任务的方法。
阅读全文