Spring定时器Quartz的用法
2024-09-24 19:17:48
首先导入需要的两个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执行,定时的配置信息在以上的第二步的类中。
最新文章
- JSP EL表达式(转)
- C# 科学计数法转换成数字
- 南邮oj[1401] 乘车费用
- Unity Sprite切割导出
- 【JavaScript】ReactJS&;NodeJS了解资料
- 在Dll中使用 TFDQuery 的 LoadFromStream 方法注意问题
- 在使用Myeclipse时,用Tomcat添加部署项目的时候报错,或启动tomcat报错
- Android任务和返回栈完全解析
- [windows驱动]windows8.1驱动调试前戏
- WEBUS2.0 In Action - [源代码] - C#代码搜索器
- Linux Mono OpenShift Cloud9 rhc
- 关于select元素的一些基本知识
- Javascript知识——事件
- JavaScript 和 TypeScript 中的 class
- zookeeper快速入门
- pig的一些实例(我常用的语法)
- python两个列表合并为字典,一个作为key,一个作为value
- mysql系列十、mysql索引结构的实现B+树/B-树原理
- 【转载】WebApi 接口测试工具:WebApiTestClient
- ThreadPoolExecutor 杂记
热门文章
- git使用(一)----git安装
- 【Android】17.4 Activity与IntentService的绑定
- BestCoder Round #4 Miaomiao&;#39;s Geometry (暴力)
- 解决Java连接MySQL存储过程返回参数值为乱码问题
- angular学习笔记(七)-迭代3
- singer页面点击歌手singer是跳转到singer-detail的设置
- 安装grub到U盘
- 关于SVN提交时报out-of-date错误的解决方法
- mysql utf8mb4 所引起的问题
- SQL server 2005如何设置一个或几个字段唯一约束?