• Springboot整合使用Quartz


    1、添加依赖

           <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-quartz</artifactId>
            </dependency>
            <dependency>
    
    

    2、继承 QuartzJobBean 类,实现具体的业务逻辑

    package com.example.demo.job;
    
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    import org.springframework.scheduling.quartz.QuartzJobBean;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * @author lyd
     * @Description:
     * @date 17:10
     */
    
    public class HiJob extends QuartzJobBean {
    
    	@Override
    	protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
    
    		// 获取jobDetail中传递的参数
    		String userNamge = (String) jobExecutionContext.getJobDetail().getJobDataMap().get("用户名");
    		String url = (String) jobExecutionContext.getJobDetail().getJobDataMap().get("url");
    		String remark = (String) jobExecutionContext.getJobDetail().getJobDataMap().get("问候语");
    
    		Date date = new Date();
    		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
    
    		System.out.println();
    		System.out.println("用户名:" + userNamge);
    		System.out.println("地址:" + url);
    		System.out.println("问候语:" + remark);
    		System.out.println("时间:" + dateFormat.format(date));
    		System.out.println();
    
    	}
    
    
    }
    

    3、配置定时任务

    package com.example.demo.config;
    
    import com.example.demo.job.HiJob;
    import org.quartz.*;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * 配置
     *
     * @author lyd
     * @Description:
     * @date 17:29
     */
    @Configuration
    public class QuartzConfig {
    
    	/**
    	 * 工作的组名
    	 */
    	private final static String JOB_GROUP_NAME = "LIU_JOB_GROUP_NAME";
    	/**
    	 * 触发组名称
    	 */
    	private final static String TRIGGER_GROUP_NAME = "LIU_TRIGGER_GROUP_NAME";
    
    
    	/**
    	 * 任务详情
    	 * 同步用户的工作细节
    	 *
    	 * @return {@link JobDetail}
    	 */
    	@Bean
    	public JobDetail syncUserJobDetail() {
    
    		JobDetail jobDetail = JobBuilder
    				.newJob(HiJob.class)
    				.withIdentity("syncUserJobDetail", JOB_GROUP_NAME)
    				.usingJobData("用户名", "这是我的用户名")
    				.usingJobData("url", "www.baidu.hhahaahah")
    				.usingJobData("问候语", "你好,啦啦啦啊")
    				.storeDurably()//持久化,即使没有Trigger关联时也不需要删除该jobdetail
    				.build();
    
    		return jobDetail;
    	}
    
    	/**
    	 * 同步userjob触发
    	 * 同步用户信息触发器
    	 *
    	 * @return {@link Trigger}
    	 */
    	@Bean
    	public Trigger syncUserjobTrigger() {
    
    		// 每5秒执行一次
    		CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
    
    		Trigger trigger = TriggerBuilder.newTrigger()
    				.forJob(syncUserJobDetail())//关联上面那个JobDetail
    				.withIdentity("我是Trigger的名字", TRIGGER_GROUP_NAME)
    				.withSchedule(cronScheduleBuilder)
    				.build();
    
    		return trigger;
    	}
    
    
    }
    

    image

  • 相关阅读:
    oracle循环语句
    解决使用Properties读取中文乱码问题
    oracle常用& to_date()怎么转换带am pm的时间格式
    distinct 多列详解
    javascript中遍历EL表达式List集合中的值
    最近一段时间代码汇总
    JAVA基础之对象的初始化
    求解圆圈中最后剩下的数字
    删除有序链表中的重复结点
    构造二叉树,并求解树的高度
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/14960338.html
Copyright © 2020-2023  润新知