Springboot实现quartz定时

需要声明的是,本篇博客参考了springboot整合Quartz实现动态配置定时任务 spring boot整合quartz实现多个定时任务。其中的大部分代码都是参考这两篇博客中的代码。在此感谢博主!
因为项目中需要用到比较复杂的定时,就看了下quartz。参考了上面的两篇博客,算是个demo吧。
简单理解,quartz的定时可以大致分为两部分,一种时单任务,一种是多任务。
需要引入的依赖:

<dependency> 
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.2.1</version>
</dependency>

1,quartz单任务

添加一个任务

@Configuration
@Component
@EnableScheduling // 该注解必须要加
public class ScheduleTask {
    
     public void scheduleTest() {
         System.err.println("scheduleTest开始定时执行");
    }
}

配置:

@Configuration
public class QuartzConfigration {
   

    @Bean(name = "jobDetail")  
    public MethodInvokingJobDetailFactoryBean detailFactoryBean(ScheduleTask task) {
        // ScheduleTask为需要执行的任务  
        MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();  
        /* 
         *  是否并发执行 
         *  例如每5s执行一次任务,但是当前任务还没有执行完,就已经过了5s了, 
         *  如果此处为true,则下一个任务会bing执行,如果此处为false,则下一个任务会等待上一个任务执行完后,
Spring BootQuartz 结合可以让开发人员更容易地在应用程序中添加定时任务。Quartz是一个强大的开源任务调度框架,而Spring Boot 提供了一种简化集成的方式。 1. 添加依赖:首先,在你的Spring Boot项目中,你需要在`pom.xml`或`build.gradle`文件中添加QuartzSpring Boot Starter Quartz的依赖。 Maven: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId> </dependency> ``` Gradle: ```groovy implementation 'org.springframework.boot:spring-boot-starter-quartz' ``` 2. 配置Quartz:在`application.properties`或`application.yml`中配置Quartz的相关属性,如数据库连接信息、job存储等。 3. 创建Job:创建一个实现了`org.quartz.Job`接口的类,并通过`@Component`注解标记为Spring Bean。在`execute()`方法中编写你要执行的任务逻辑。 4. JobDetail和Trigger:使用`JobBuilder`和`TriggerBuilder`创建JobDetail(工作详细信息)和Trigger(触发器),指定执行的时间规则。 5. 定义JobScheduler:在Spring的配置类中,注入`JobLauncher`和`SchedulerFactoryBean`,然后启动scheduler并提交你的JobDetail和Trigger。 ```java @Configuration public class AppConfig { @Autowired private JobLauncher jobLauncher; @Autowired private Scheduler scheduler; @Bean(destroyMethod = "shutdown") public SchedulerFactoryBean schedulerFactoryBean() { SchedulerFactoryBean factoryBean = new SchedulerFactoryBean(); factoryBean.setJobDetails(jobDetails()); factoryBean.setTriggers(triggers()); return factoryBean; } private List<JobDetail> jobDetails() { // ... } private Collection<Trigger> triggers() { // ... } } ``` 6. 启动任务:在`ApplicationContext`初始化完成后,你可以通过`scheduler.start()`开始执行定时任务。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值