SpringBoot整合Quartz
实现

-
引入依赖 spring-boot-starter-quartz
-
创建一个Job 继承Job类
-
重写excute 方法 参数表示定时任务执行的环境(上下文)
-
创建JobDetail 4.1 创建QuartzConfig配置类(注意加上@Configuration注解)
4.2 在QuartzConfig中创建一个JobDetail()方法 加上@Bean注入容器
@Bean public JobDetail jobDetail(){ //Job.class为第二步创建的job类,任务绑定 return JObBuilder.newJob(Job.class) .storeDurably() //持久化(没有对应的Trigger去制定执行条件,没有意义,但是又需要保留 采取持久化操作) .withIdentity("name任务名","group任务组") //定义唯一标识 区分其他任务 .usingJobData("count",1) //数据初始化 1为任务执行次数 .build(); } -
指定一个Trigger,触发器,设定Job执行的时机
5.1 在QuartzConfig配置类中定义一个Trigger方法
@Bean public Trigger trigger(){ //cro表达式 String croExpression="0 0 * * * ? ";//表示每小时执行一次 return TriggerBuilder.newTrigger() .withIdentity("trggger1","group") //唯一标识 .forJob(JobDetail()) //关联绑定JobDetail .withSchedule(CronScheduleBuilder.cronSchedule(croExpression)) //通过Cron表达式指定时间规则 .build(); }
-
在Job类中的重写的execute() 编写任务内容
@PersistJobDataAfterExecution// 设置一个有状态的Job count不带注解每次都会创建一个新的jobDetail对象,每次输出count都是初始值,加上注解就可以每次执行++ @DisallowConcurrentRExecution //禁止并发访问同一个job (当任务执行所需时间>任务间隔时间 任务多次执行 导致数据错乱 但是任务间隔时间就被忽略,会等到上一个任务结束之后才会继续执行) @Component public class MyJob implements Job{ @Autowired private Scheduler scheduler; @Override public void execute(JobExecutionContext context) throws JObExecutionExcep

最低0.47元/天 解锁文章
3617






