springboot整合quartz,请给我详细代码
时间: 2024-05-03 22:19:02 浏览: 77
spring整合quartz的代码
好的,下面是一个简单的 Spring Boot 整合 Quartz 的例子:
首先,需要在 pom.xml 文件中添加依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
```
然后,在 application.properties 文件中添加 Quartz 相关的配置:
```properties
# Quartz Scheduler Configurations
spring.quartz.job-store-type=jdbc
spring.quartz.jdbc.initialize-schema=always
spring.quartz.properties.org.quartz.scheduler.instanceName=SpringBootQuartz
spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO
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.dataSource=myDS
spring.quartz.properties.org.quartz.dataSource.myDS.driverClassName=com.mysql.cj.jdbc.Driver
spring.quartz.properties.org.quartz.dataSource.myDS.URL=jdbc:mysql://localhost:3306/quartz?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
spring.quartz.properties.org.quartz.dataSource.myDS.user=root
spring.quartz.properties.org.quartz.dataSource.myDS.password=root
spring.quartz.properties.org.quartz.dataSource.myDS.maxConnections=10
```
其中,`org.quartz.dataSource.myDS.URL` 需要根据实际情况修改,这里使用的是 MySQL 数据库。
接着,在项目中创建一个 Job 类,用于定时执行任务,例如:
```java
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("Hello Quartz!");
}
}
```
然后,在 Spring Boot 中创建一个 SchedulerFactoryBean,用于初始化 Quartz Scheduler:
```java
@Configuration
public class QuartzConfig {
@Bean
public JobDetail myJobDetail() {
return JobBuilder.newJob(MyJob.class)
.withIdentity("myJob")
.storeDurably()
.build();
}
@Bean
public Trigger myTrigger() {
SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(5)
.repeatForever();
return TriggerBuilder.newTrigger()
.forJob(myJobDetail())
.withIdentity("myTrigger")
.withSchedule(scheduleBuilder)
.build();
}
@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
schedulerFactoryBean.setJobDetails(myJobDetail());
schedulerFactoryBean.setTriggers(myTrigger());
return schedulerFactoryBean;
}
}
```
这里我们定时执行 MyJob 类中的任务,每 5 秒执行一次。
最后,在启动类上添加 `@EnableScheduling` 注解,启用 Spring Boot 的定时任务功能:
```java
@SpringBootApplication
@EnableScheduling
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
这样,一个简单的 Spring Boot 整合 Quartz 的例子就完成了。
阅读全文