Spring Quartz 实现多任务定时调用
前言
早在学习如何进行微信公众号开发时,我就接触过 Spring Quartz 了,当时是为了伦询向微信服务器请求 Token 值(2小时内有效)。最近在某个项目中可能需要用到这个框架,我就将它又翻了出来,整理一下。
介绍
Quartz框架提供了任务调度的支持,比如,在何时执行何种任务。它是一个开源的由OpenSymphony维护的项目,支持普通POJO任务,甚至可以是EJB组件。
1. POJO(Plain Old Java Objects)简单的Java对象,实际就是普通JavaBeans;也被称为Data对象,大量应用于表现现实中的对象。
2. EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。
正式开工
1. 利用 maven 做项目依赖包管理
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
顺带提一下,有一次我在 IDEA 创建了一个新的项目,并导入以前的配置文件,就唯独忘记了 maven 的配置(我因为我导入了)。奇怪的是,配置文件居然没有报错…………导致运行整个项目时报ClassNotFoundException
。
2. 实现指定业务
Quartz 框架的最重要事情就是我们希望实现它在在何时执行何种任务。而指定的业务代码,和其他的 java 类方法的实现是一致的,位于同一级别。
/**
* 定时器
* 在指定的时间去做指定的业务
* Created by zggdczfr on 2016/11/6.
*/
public class QuartzJob {
//自定义 Logger 类,与 log4j 提供的日志记录不同
private static final Logger LOGGER = Logger.getLogger(QuartzJob.class);
public void work(){
try {
//实现业务逻辑代码
LOGGER.log(Level.DEB