SSM框架极简便携式集成Quartz任务调度
2017-11-17 11:39
429 查看
SSM框架极简便携式集成Quartz任务调度
SSM集成Quartz,实际操作只需两步:1.配置自定义的Job(添加job的相关属性,修改任务方法)
2.将Job注册到JobRegister
即可在项目中运行属于你的Quartz任务调度,方便实用,易于操作。
1.添加maven依赖
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency>
2.配置基本任务属性类BaseJob
BaseJob:作用用于配置自定义Job时候存储属性内容,以及用于配置JobDataMap来传数据import lombok.Getter; import lombok.Setter; import org.quartz.JobDataMap; /** * 基本任务属性 * * @author : CatalpaFlat * @date :Create in 16:14 2017/11/16 */ public abstract class BaseJob { @Getter @Setter protected String jobName; @Getter @Setter protected String cronTime; @Getter @Setter protected String jobGroupName; @Getter @Setter protected String triggerGroupName; @Getter @Setter protected JobDataMap jobDataMap; }
3.自定义任务TestJob
自定义任务:通过构造方法,配置Job的基本属性,以及将业务逻辑在execute中进行呈现。/** * 测试任务 * * @author CatalpaFlat * @date Create in 9:47 2017/11/15 */ @Component public class TestJob extends BaseJob implements Job { public TestJob() { super.setCronTime("0/2 * * * * ?"); super.setJobName(this.getClass().getSimpleName()); } /** * 把要执行的操作,写在execute方法中 */ @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { System.out.println("\t\t"+TestJob.class.getName()+":"+ System.currentTimeMillis()); //TODO you logic } }
4.任务注册器JobRegister
任务注册器:JobRegister将自定义的Job注册进来,/** * 注册自定义任务 * * @author CatalpaFlat * @date Create in 14:26 2017/11/16 */ public interface JobRegister { /** * 测试Job */ Class<? extends BaseJob> TEST_JOB = TestJob.class; Class<? extends BaseJob> CHEN_JOB = ChenJob.class; }
5.自定义初始化Quartz类
InitQuartz:初始化job到Scheduler/** * 初始化任务调度 * * @author : CatalpaFlat * @date :Create in 14:49 2017/11/16 */ public class InitQuartz { private static Set<Class> jobs = new HashSet<>(); /** * 获取已经注册的任务 */ private void initJobNameList() throws IllegalAccessException { Field[] fields = JobRegister.class.getFields(); for (Field field : fields) { Class name = (Class) field.get(field.getName()); jobs.add(name); } System.out.println("有多少个job:"+jobs.size()); } /** * 动态添加任务 */ private void addJobByCronTrigger() throws IllegalAccessException, InstantiationException { for (Class cls : jobs) { BaseJob bJob = (BaseJob) cls.newInstance(); QuartzUtil.addJobByCronTrigger(cls, bJob); } } /** * 初始化Quartz */ public void init() { try { //初始化JobName initJobNameList(); //开始添加任务 addJobByCronTrigger(); } catch (InstantiationException | IllegalAccessException e) { e.printStackTrace(); } } }
6.将Quartz整合到spring
在application.xml中进行注入即可:<!--spring启动后初始化Quartz--> <bean id="initQuartz" class="com.chen.module.quartz.InitQuartz" init-method="init"/>
7.测试
直接启动Tomcat![](https://i.imgur.com/AlroEAO.png)
8.小注意
若是出现重复初始化Quartz,那么可能是以下问题:web.xml中配置了:
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
将其去除即可。
相关文章推荐
- ssm(spring+springMVC+Mybatis)框架 集成Quartz(定时任务框架)
- SSM框架整合 quartz 定时任务调度
- Spring集成quartz任务调度框架
- Quartz 任务调度实例 定时的在SSM框架中的运用
- SSM框架整合 quartz 定时任务调度
- 使用Spring来实现任务计划服务三:集成quartz任务调度框架
- 企业级定时任务调度框架Quartz中文文档chm
- Spring集成Quartz定时任务框架介绍和Cron表达式详解
- Spring集成Quartz定时任务框架介绍和Cron表达式详解
- (2)Spring集成Quartz定时任务框架介绍和Cron表达式详解
- 企业级任务调度框架Quartz(1) --企业应用中的任务调度介绍
- Spring与Quartz集成配置实现简单定时任务调度
- 企业级任务调度框架Quartz(5) Quartz的声明式配置
- 任务调度开源框架Quartz动态添加、修改和删除定时任务
- 山寨版Quartz.Net任务统一调度框架
- 任务调度框架Quartz
- Quartz 企业级任务调度框架(一)之简介
- Spring配置Quartz任务调度框架教程
- 任务调度开源框架Quartz动态添加、修改和删除定时任务
- 任务调度框架Quartz(四)Quartz任务调度框架之触发器精讲SimpleTrigger和CronTrigger、最详细的Cron表达式范例