Spring的scheduling.quartz包中对Quartz框架进行了封装,使得开发时不用写任何QuartSpring的代码就可以实现定时任务。Spring通过JobDetailBean,MethodInvokingJobDetailFactoryBean实现Job的定义。后者更加实用,只需指定要运行的类,和该类中要运行的方法即可,Spring将自动生成符合Quartz要求的JobDetail。

在上一篇文章《Quartz 框架快速入门(三)》中我们将示例迁移到Web环境下了,但使用的是Quartz的启动机制,这一篇中我们将让Web服务器启动Spring,通过Spring的配置文件来进行任务的调度

1,创建一个Web项目,加入spring.jar,quartz-1.6.0.jar,commons-collections.jar,jta.jar ,commons-logging.jar这几个包.

2,创建一个类,在类中添加一个方法execute,我们将对这个方法进行定时调度.

package com.vista.quartz;

import java.util.Date;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class HelloWorld 
{
    private static Log logger = LogFactory.getLog(HelloWorld.class);//日志记录器
    public HelloWorld()
    {
    }
    public void execute()
    {
        logger.info("Kick your ass and Fuck your mother! - " + new Date()); 
    }
}

2. Spring配置文件applicationContext.xml 修改如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<!-- 要调用的工作类 -->
    <bean id="quartzJob" class="com.vista.quartz.HelloWorld"></bean>
    <!-- 定义调用对象和调用对象的方法 -->
    <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!-- 调用的类 -->
        <property name="targetObject">
            <ref bean="quartzJob"/>
        </property>
        <!-- 调用类中的方法 -->
        <property name="targetMethod">
             <value>execute</value>
        </property>
    </bean>
    <!-- 定义触发时间 -->
    <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
            <ref bean="jobtask"/>
        </property>
        <!-- cron表达式 -->
        <property name="cronExpression">
            <value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
        </property>
    </bean>
    <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  -->
    <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
               <ref bean="doTime"/>
            </list>
        </property>
    </bean>
</beans>

3,先在控制台中对上面的代码进行测试,我们要做的只是加载Spring的配置文件就可以了,代码如下:

package com.vista.quartz;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test 
{
    public static void main(String[] args) 
    {
         System.out.println("Test start.");
            ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            //如果配置文件中将startQuertz bean的lazy-init设置为false 则不用实例化
            //context.getBean("startQuertz");
         System.out.print("Test end..");
    }
}

4,然后将Web.xml修改如下,让tomcat在启动时去初始化Spring:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
     <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/classes/applicationContext.xml
        </param-value>
    </context-param> 
    
    <servlet>
        <servlet-name>SpringContextServlet</servlet-name>
        <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

5,最后启动Tomcat,测试结果如下图所示:

Quartz 框架快速入门(四)相关推荐

  1. Quartz 框架快速入门(二)

    尽可能的用声明式处理软件配置,其次才考虑编程式的方式.在上一篇<Quartz 框架快速入门(一)>中,如果我们要在 Job 启动之后改变它的执行时间和频度,必须去修改源代码重新编译.这种方 ...

  2. Quartz 框架快速入门(三)

    在前面两篇文章中简单介绍了在java应用程序中如何使用Quartz框架,这一篇中我们将看到如何在web环境下通过配置文件来完成Quartz的后台作业调度,而不必手工去创建Trigger和Schedul ...

  3. Quartz 框架快速入门(一)

    创建一个 Java 工程,引入几个 JAR 到工程中才能成功构建它们.首先,你需要 Quartz 的二进制版本,包的名字是 quartz-<version>.jar.Quartz 还需要几 ...

  4. Quartz.NET快速入门指南

    最近,在工作中遇到了 Quartz.net 这个组件,为了更好的理解项目代码的来龙去脉,于是决定好好的研究一下这个东西.确实是好东西,既然是好东西,我就拿出来分享一下.万丈高楼平地起,我们也从入门开始 ...

  5. 微信小程序wepy框架快速入门

    微信小程序wepy框架快速入门 微信小程序简介 微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一 ...

  6. Python学习笔记--10.Django框架快速入门之后台管理admin(书籍管理系统)

    Python学习笔记--10.Django框架快速入门之后台管理 一.Django框架介绍 二.创建第一个Django项目 三.应用的创建和使用 四.项目的数据库模型 ORM对象关系映射 sqlite ...

  7. Django框架快速入门之后台管理admin(书籍管理系统)

    Django框架快速入门之后台管理admin(书籍管理系统) 一.Django框架介绍 什么是框架? 软件框架就是为实现或完成某种软件开发时,提供了一些基础的软件产品, 框架的功能类似于 基础设施 , ...

  8. Python Scrapy中文教程,Scrapy框架快速入门!

    谈起爬虫必然要提起 Scrapy 框架,因为它能够帮助提升爬虫的效率,从而更好地实现爬虫. Scrapy 是一个为了抓取网页数据.提取结构性数据而编写的应用框架,该框架是封装的,包含 request ...

  9. 【完结】给新手的12大深度学习开源框架快速入门项目

    文/编辑 | 言有三 这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpen ...

最新文章

  1. 面向药物发现的深度图学习
  2. Python Numba CPU下加速
  3. 7.22 校内模拟赛
  4. pythoni屏幕连点_【Flutter组件】仿抖音双击点赞弹出爱心效果(可连点)
  5. 链表操作时头结点的好处
  6. Mapper XML Files详解
  7. 你属于开源性格测试六大分类中的哪一类呢
  8. python 多线程笔记(2)-- 锁
  9. 贪吃的大嘴用java_算法提高 贪吃的大嘴
  10. 数据结构笔记(十一)串
  11. 如何安装王码五笔字型输入法86版
  12. python信息技术答案_高中信息技术《Python语言》模块试卷习题.doc
  13. GetClientRect、ScreenToClient、GetWindowRect、ClientToScreen、MoveWindow用法总结
  14. 马云和卫哲:从不屑到仰慕 从朋友到诀别
  15. 一行搞定List<T>中的成员数量统计
  16. 【在线教育直播】直播很卡怎么办?
  17. 华为鸿蒙源代码在哪里下载,华为鸿蒙正式开源!源码地址公布,对外开放下载...
  18. Ubuntu 13.04下安装WPS for Linux
  19. 把旧光驱改CD播放机的方法
  20. win7删除文件夹提示找不到项目,文件删不掉怎么办?

热门文章

  1. java多线程系列(四)---ReentrantLock的使用
  2. Java 条件编译 Conditional Compilation
  3. Java程序员从笨鸟到菜鸟之(十二)java异常处理机制
  4. LaTeX文档插入图片的几种常用方法
  5. Windows服务程序时钟调用
  6. Oracle编程入门经典 第10章 PLSQL
  7. Oracle编程入门经典 第6章 在Oracle中处理语句
  8. 无插件Vim编程技巧
  9. 编程之美-连连看游戏设计方法整理
  10. Matlab矩阵的产生