SpringBoot整合quartz的一个例子

SpringBoot整合quartz的一个例子
一、引入依赖

        <!--quartz 定时器框架-->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz-jobs</artifactId>
            <version>2.2.1</version>
        </dependency>

二、写定时任务

package springboot.config;


import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class ScheduledTask {

    /**
     * 复杂定时任务,每天17:38分执行一次
     */
    @Scheduled(cron = "0 38 17 * * ?")
    public void scheduledTask1(){
        System.out.println("定时任务1");
    }

    /**
     * 简单定时任务 initialDelay = 10000 意思就是在容器启动后,延迟10秒后再执行一次定时器
     * fixedDelay = 1000 * 5 意思是以后每15秒再执行一次该定时器
     */
    @Scheduled(initialDelay =  1000 * 10,fixedDelay = 1000 * 5)
    public void scheduledTask2(){
        System.out.println("任务2执行时间:"+System.currentTimeMillis());
        System.out.println("定时任务2");
        try {
            Thread.sleep(2*1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("任务2结束时间:"+System.currentTimeMillis());
    }

    @Scheduled(initialDelay =  1000 * 10,fixedRate = 1000 * 5)
    public void scheduledTask3(){
        System.out.println("任务3执行时间:"+System.currentTimeMillis());
        System.out.println("定时任务3");
        try {
            Thread.sleep(2*1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("任务3结束时间:"+System.currentTimeMillis());
    }
}


三、主启动类加上@EnableScheduling注解

package springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@EnableScheduling
@SpringBootApplication
public class HelloApplication {
    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class,args);
    }
}

下面是一个示例,演示了如何在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将自动启动并执行定时任务。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值