给我写一个springboot动态定时任务
时间: 2023-09-21 11:02:58 浏览: 173
springboot 定时任务
Spring Boot动态定时任务能让你在运行时动态地创建和取消定时任务。在这个例子中,我们将演示如何使用Spring Boot和Quartz创建动态的定时任务。
这里有一个简单的示例,它将每5秒打印一次当前时间戳:
首先,添加必要的依赖项:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
```
创建一个Job类:
```java
public class MyJob implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("Current timestamp: " + System.currentTimeMillis());
}
}
```
创建一个JobDetail对象:
```java
JobDetail jobDetail = JobBuilder.newJob(MyJob.class)
.withIdentity("myJob")
.build();
```
创建一个Trigger对象:
```java
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("myTrigger")
.withSchedule(SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(5)
.repeatForever())
.build();
```
创建一个SchedulerFactoryBean对象:
```java
@Autowired
private SchedulerFactoryBean schedulerFactoryBean;
public void scheduleJob() throws SchedulerException {
Scheduler scheduler = schedulerFactoryBean.getScheduler();
scheduler.scheduleJob(jobDetail, trigger);
}
```
现在,每5秒钟将会打印一次当前时间戳。如果你想取消这个任务,你只需要调用scheduler.deleteJob方法并传递任务的名称即可:
```java
scheduler.deleteJob(new JobKey("myJob"));
```
这里的示例是一个简单的例子,你可以根据你的需要创建更复杂的任务。
阅读全文