springboot整合quartz

引言

定时任务调度是Java开发中不可或缺的重要部分,但是Java自带的Time等任务调度类在实际项目中不好用。所以Quartz和Spring Task就成了我们项目开发技术选型最多的,在这里我们着重探讨一下Quartz在Spring Boot 2.X版本中的使用。

Quartz

介绍

Quartz是OpenSymphony开源组织在Job scheduling领域的开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。

Quartz是一个任务日程管理系统,一个在预先确定(被纳入日程)的时间到达时,负责执行(或者通知)其他软件组件的系统。

Quartz用一个小Java库发布文件(.jar文件),这个库文件包含了所有Quartz核心功能。这些功能的主要接口(API)是Scheduler接口。它提供了简单的操作,例如:将任务纳入日程或者从日程中取消,开始/停止/暂停日程进度。

设计架构

介绍

  • Scheduler – 核心调度器
  • Job – 任务
  • JobDetail – 任务描述
  • Trigger – 触发器

图示

springboot整合quartz_第1张图片对比spring整合的配置文件




    
    
    
        
        
        
        
        
        
        
        
        
        
    
    
    

    
    
        
        
        
        
        
        
        
        
    


    
    
        
            
                
                
            
        
        
    



对比发现xml的配置非常的复杂,因此springboot就很方便了

一,创建springboot项目导入jar包



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.3
         
    
    com.atguigu
    springboot_quzrtz
    0.0.1-SNAPSHOT
    springboot_quzrtz
    Demo project for Spring Boot
    
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter-quartz
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    




二,创建执行任务类


@Component
public class Task1 {

    public  void job1(){
        System.out.println("我是任务一我执行啦");
    }
}

二,创建配置类

真实开发中根据自己的需求创建,此处需要演示因此创建了一个格式化的对象


@Configuration
public class DateConfig {

    @Bean
    public SimpleDateFormat getDate(){
        return new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
    }
}

三,开启任务调度,设置时间

@EnableScheduling 开启任务调度

@Scheduled(fixedRate = 1000*3)设置时间


@Component
@EnableScheduling
public class StartTask1 {

    @Autowired
    private  Task1 task1;

    @Autowired
    private  SimpleDateFormat simpleDateFormat;

    @Scheduled(fixedRate = 1000*3)
    public void testTime(){
        task1.job1();
        System.out.println("simpleDateFormat = " + simpleDateFormat.format(new Date()));
    }
}

四,主启动类测试

@springbootApplicat

你可能感兴趣的:(springboot整合,spring,boot,后端,java)