Spring定时器Quartz的用法
首先导入需要的两个jar:
spring-context-support-4.1.1.RELEASE.jar
quartz-2.2.1.jar
1.创建两个类:

2.
QuartzConfiguration:
package com.baibeiyun.yunbang.common.webservice; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.JobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean; @Configuration
public class QuartzConfiguration { @SuppressWarnings("unused")
private final Logger log = LoggerFactory.getLogger(getClass()); @Bean
public SchedulerFactoryBean schedulerFactory() {
SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
schedulerFactoryBean.setTriggers(cronTriggerFactoryBean().getObject());
schedulerFactoryBean.setTaskExecutor(threadPoolTaskExecutor());
schedulerFactoryBean.setApplicationContextSchedulerContextKey("applicationContext");
return schedulerFactoryBean;
}
@Bean
public CronTriggerFactoryBean cronTriggerFactoryBean() {
CronTriggerFactoryBean cronTriggerFactoryBean = new CronTriggerFactoryBean();
cronTriggerFactoryBean.setJobDetail(jobDetailFactoryBean().getObject());
cronTriggerFactoryBean.setCronExpression("0 0/1 * * * ?");
//cronTriggerFactoryBean.setCronExpression("0/5 * * * * ?");
return cronTriggerFactoryBean;
}
@Bean
public JobDetailFactoryBean jobDetailFactoryBean() {
JobDetailFactoryBean jobDetailFactoryBean = new JobDetailFactoryBean();
jobDetailFactoryBean.setJobClass(WorkorderCheckJob.class);
jobDetailFactoryBean.setDurability(true);
return jobDetailFactoryBean;
}
@Bean
public ThreadPoolTaskExecutor threadPoolTaskExecutor() {
ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
threadPoolTaskExecutor.setCorePoolSize(10);
threadPoolTaskExecutor.setMaxPoolSize(20);
threadPoolTaskExecutor.setQueueCapacity(5);
threadPoolTaskExecutor.setKeepAliveSeconds(100);
return threadPoolTaskExecutor;
} }
3.WorkorderCheckJob:
package com.textile.quartz; import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.SchedulerException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; /**
* Created by Administrator on 2016/12/4.
*/
@Service
@Transactional
public class WorkorderCheckJob extends QuartzJobBean{
@SuppressWarnings("unused")
private final Logger log = LoggerFactory.getLogger(getClass()); private static boolean isRun = false; protected void executeInternal(JobExecutionContext executionContext) throws JobExecutionException {
if (isRun) {
System.out.println("前一次未执行完,跳过本次任务!");
return;
}
isRun = true;
task(executionContext);
isRun = false;
System.out.println("执行逻辑-isRunFinish"); } private void task(JobExecutionContext executionContext) {
try {
ApplicationContext applicationContext = (ApplicationContext) executionContext.getScheduler().getContext().get("applicationContext"); //AppInstanceService appInstanceService = (AppInstanceService)applicationContext.getBean(AppInstanceService.class);
//appInstanceService.clearInstanceTime(); } catch (BeansException e) {
e.printStackTrace(); } catch (SchedulerException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
4.定时的任务在第三步的类中的executeInternal执行,定时的配置信息在以上的第二步的类中。
Spring定时器Quartz的用法的更多相关文章
- Spring 定时器Quartz的用法
Spring定时器Quartz的用法也很简单,需要引入quartz-all-1.5.2.jar java代码如下: package com.coalmine.desktop; import java. ...
- Spring定时器Quartz的使用
在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等,定时更新某某操作……. 我们可以使用java.util.Timer结合java.util.TimerT ...
- spring 定时器----quartz启动问题
今天,突然要用到定时器,在网上查了下资料,保存下以方便后面查找: 什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定). 这样总不能修改配置文件 ...
- spring 定时器Quartz
一.Quartz是什么 二. 核心接口 scheduler --- 核心调度器 Job --- 任务 JobDetail --- 任务描述 Tigger --- 触发器 三 . 核心接口之间 ...
- spring定时器quartz版本问题
如果quartz的版本是1.8.5启动会报错,修改给2.0版本以上即可 <dependency> <groupId>org.quartz-scheduler</group ...
- Spring定时器Quartz
<bean id="startQuertz" lazy-init="false" autowire="no" class=" ...
- Spring中Quartz调度器的使用
一.Quartz的特点 * 按作业类的继承方式来分,主要有以下两种: 1.作业类继承org.springframework.scheduling.quartz.QuartzJobBean类的方式 2. ...
- JDK、Spring、Quartz等几种不同定时器的用法,以及cronExpression表达式定义
referenc:https://blog.csdn.net/clementad/article/details/42042111 下面介绍几种常用的定时器及其实现方法: 第一种:Timer和Time ...
- 两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz
1.Java Timer定时 首先继承java.util.TimerTask类实现run方法 import java.util.TimerTask; public class EmailReportT ...
随机推荐
- Java:集合,Collections工具类用法
Collections工具类提供了大量针对Collection/Map的操作,总体可分为四类,都为静态(static)方法: 1. 排序操作(主要针对List接口相关) reverse(List li ...
- 【C语言】调整数组使奇数所有都位于偶数前面(改动)
//调整数组使奇数全部都位于偶数前面. //输入一个整数数组.实现一个函数,来调整该数组中数字的顺序使得数组中全部的奇数位于数组的前半部分,全部偶数位于数组的后半部分 #include <std ...
- CDH5.2+CM5.2+impala2+Spark1.1 集群搭建基础环境准备
測试集群简单介绍:一共同拥有4台机器:10.10.244.136.10.10.244.137.10.10.244.138.10.10.244.139. 10.10.244.136是管理节点.另外3台是 ...
- Sqlite 常用函数推荐
Sqlite 常用函数 1 .打开数据库: 说明:打开一个数据库,文件名不一定要存在,如果此文件不存在, sqlite 会自动创建.第一个参数指文件名,第二个参数则是定义的 sqlite3 ** 结构 ...
- 按“块”的方式写dom以及代码注释
前言 首先这个文档中主要记述了自己在编写html代码时如何构建良好的dom结构的一些所思所想,在这一部分主要说明按“块”构建dom结构的思路.同时在这篇文档中也记述了自己对代码注释的理解,在这一部分主 ...
- RAID卡 BBU Learn Cycle周期的影响
背景 最近遇到有些带MegaSAS RAID卡的服务器,在业务高峰时突然IO负载飚升得很高,IO性能急剧下降,查了日志及各种设置最后才发现是RAID卡的Cache写策略由 WriteBack变成Wri ...
- linq语法之select distinct Count Sum Min Max Avg
原文来自:http://www.50cms.com/Pages_13_72.aspx 本篇详细说明linq中的Select和Count/Sum/Min/Max/Avg等的用法. Select/Dist ...
- 每日英语:China Underwhelmed After First Apple Event
Apple's roll-out of its latest iPhones landed with a thud in China, the company's biggest foreign ma ...
- Freemarker-2.3.22 Demo - No01_获取模板并直接输出
package No01_获取模板并直接输出; import java.io.File; import java.io.FileOutputStream; import java.io.OutputS ...
- Eclipse无法启动小结
Eclipse启动的时候出现: The Eclipse executable launcher was unable to locate its companion shared library 针对 ...