博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
定时任务-在spring中配置quartz
阅读量:4182 次
发布时间:2019-05-26

本文共 5206 字,大约阅读时间需要 17 分钟。

使用的版本Spring4.04+Quartz2.2.3,关于jar包自行下载。

详细需要以下几个步骤来完成:

1.  定义要执行的Job类

2.  定义quartz的配置文件applicationContext-quartz.xml

    2.1 定义要调用的对象和对象的方法

    2.2 在触发器中配置使用该方法的时间

    2.3 在总管类中添加该任务

3.  定义执行的任务的时间配置文件 

4. 在拦截器中添加要扫描的包

5. 将quartz配置文件添加到我们的spring容器的配置文件applicationContext.xml中

 6. 启动tomcat 

 

下面以具体实例来演示:

1. 定义要执行的Job类 TestJob.java

注意加上注解标记该类为Component组件,这样方便自动装配到spring容器中管理。

package com.crm.scheduler;import java.text.SimpleDateFormat;import java.util.Date;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;@Component("testJobComponent")public class TestJob {        //定义是否    @Value("${crmbi.cronExpression.isDoTestJob}")    private boolean isDoTestJob = false;    public void execute(){                if(!isDoTestJob){            return ;        }                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        System.out.println("我是定时任务类,现在的执行时间是" + sdf.format(new Date()));            }}

 

2. 定义quartz的配置文件

2.1 定义要调用的对象和对象的方法,在这里对象就是上面的新建的testJobComponnent。

2.2 定义触发器并配置定时任务执行的时间

${crmbi.cronExpression.testJob}

2.3 在总管理中添加该任务

 

最后展示下完成的配置文件applicationContext-quartz.xml如下,其中包含了2个定时任务类,triggerTestJob为我们新增的任务信息:

${crmbi.cronExpression.syncHive2OracleJob}
${crmbi.cronExpression.testJob}

 

3. 定义执行任务的时间配置文件config.properties.

注意这里的crmbi.cronExpression.isDotestJob用来控制是否执行任务的开关

# 3:00 every daycrmbi.cronExpression.syncHive2OracleJob=0 0 3 * * ? crmbi.cronExpression.isDoSyncHive2Oracle=true# each 5 minutscrmbi.cronExpression.testJob=0 0/5 * * * ? crmbi.cronExpression.isDoTestJob=true

4. 在拦截器中添加要扫描的包,这里加入了com.crm.scheduler包和config.properties文件的扫描。

5.将quartz的配置文件引入到spring容器中。

 

6. 最后启动tomcat, 等待一段时间后,可以看到控制台输出如下:

[BI-CONSOLE] 2016-08-11 18:03:44.939 INFO RequestMappingHandlerMapping.registerHandlerMethod(197) | Mapped "{[/user/showUser],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.crm.action.system.UserController.showUser(org.springframework.ui.Model,java.lang.String,java.lang.String)[BI-CONSOLE] 2016-08-11 18:03:44.940 INFO RequestMappingHandlerMapping.registerHandlerMethod(197) | Mapped "{[/user/updateUserPwd],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.util.Map
com.crm.action.system.UserController.updateUserPwd(java.lang.String,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)[BI-CONSOLE] 2016-08-11 18:03:44.940 INFO RequestMappingHandlerMapping.registerHandlerMethod(197) | Mapped "{[/user/userSave],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.util.Map
com.crm.action.system.UserController.saveUser(org.springframework.ui.Model,com.crm.entity.system.MUser)[BI-CONSOLE] 2016-08-11 18:03:45.533 INFO SimpleUrlHandlerMapping.registerHandler(302) | Root mapping to handler of type [class org.springframework.web.servlet.mvc.ParameterizableViewController][BI-CONSOLE] 2016-08-11 18:03:45.540 INFO SimpleUrlHandlerMapping.registerHandler(315) | Mapped URL path [/**] onto handler 'org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler#0'[BI-CONSOLE] 2016-08-11 18:03:45.581 INFO SimpleUrlHandlerMapping.registerHandler(315) | Mapped URL path [/resources/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0'[BI-CONSOLE] 2016-08-11 18:03:45.863 INFO DispatcherServlet.initServletBean(498) | FrameworkServlet 'crmbi': initialization completed in 1255 ms八月 11, 2016 6:03:45 下午 org.apache.coyote.AbstractProtocol start信息: Starting ProtocolHandler ["http-bio-8080"]八月 11, 2016 6:03:45 下午 org.apache.coyote.AbstractProtocol start信息: Starting ProtocolHandler ["ajp-bio-8009"]八月 11, 2016 6:03:45 下午 org.apache.catalina.startup.Catalina start信息: Server startup in 14949 ms[BI-CONSOLE] 2016-08-11 18:04:14.583 INFO SchedulerFactoryBean.run(667) | Starting Quartz Scheduler now, after delay of 30 seconds[BI-CONSOLE] 2016-08-11 18:04:14.584 INFO QuartzScheduler.start(575) | Scheduler startQuartz_$_NON_CLUSTERED started.我是定时任务类,现在的执行时间是2016-08-11 18:05:00 我是定时任务类,现在的执行时间是2016-08-11 18:10:00

 

7. 附上项目的文档结构图如下:

转载地址:http://smzoi.baihongyu.com/

你可能感兴趣的文章
文科生北海唐的Java之路:方法(慕课)
查看>>
自学Java的轨迹线路
查看>>
如何更好的隐藏你自己,让我们谈谈什么是封装?
查看>>
文科生北海糖的:Java之路——继承
查看>>
Makefile 中:= ?= += =的区别
查看>>
消灭编译警告(Warning)
查看>>
(GCC) How can I hide "defined but not used" warnings in GCC?
查看>>
错误: 隐式声明函数‘kmalloc’ [-Werror=implicit-function-declaration]
查看>>
error: two or more data types in declaration specifiers原因及解决方法
查看>>
Linux驱动基础开发2
查看>>
ioctl在socket中的一些用法及示例
查看>>
Linux设备驱动--块设备(二)之相关结构体
查看>>
Linux设备驱动--块设备(四)之“自造请求”
查看>>
Nand Flash和Nor Flash相关知识
查看>>
NAND flash和NOR flash的区别
查看>>
writeb(), writew(), writel(),readb(), readw(), readl() 宏函数
查看>>
NOR Flash擦写和原理分析
查看>>
51单片机程序执行流程(STARTUP.A51)
查看>>
原码, 反码, 补码 详解
查看>>
Java自学第一阶段(二)- 小试牛刀
查看>>