项目ITP(五) spring4.0 整合 Quartz 实现任务调度

前言

  系列文章:[传送门]

  项目需求:

    二维码推送到一体机上,给学生签到扫描用。然后需要的是 上课前20分钟 ,幸好在帮带我的学长做 p2p 的时候,接触过。自然 quartz 是首选。所以我就配置了下,搞了个小样例给大家。

正文 

  spring4.0 整合 Quartz 实现任务调度。这是期末项目的最后一篇,剩下到暑假吧。

    Quartz 介绍

    Quartz is a full-featured, open source job scheduling service that can be integrated with, or used along side virtually any Java application - from the smallest stand-alone application to the largest e-commerce system. Quartz can be used to create simple or complex schedules for executing tens, hundreds, or even tens-of-thousands of jobs; 
    Quartz框架是一个全功能、开源的任务调度服务,可以集成几乎任何的java应用程序—从小的单片机系统到大型的电子商务系统。Quartz可以执行上千上万的任务调度。
 
    核心概念
     Quartz核心的概念 scheduler任务调度、Job任务、Trigger触发器、JobDetail任务细节
     相关文档:http://www.quartz-scheduler.org/documentation/quartz-2.2.x/quick-start

实战 

  第一步 :spring、quartz 相应的jar包,添加到项目中(需要的call me)

    /WEB-INF/lib/quartz-2.2.1.jar

    以及spring的一些必要包

  

    第二步:web.xml中配置spring
xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>wmuitpdisplay-name>
      
      
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    listener>
    
    
     
      
    <context-param>
        <param-name>contextConfigLocationparam-name>
        <param-value>classpath:applicationContext.xmlparam-value>
    context-param>
    
    
    <servlet>
        <servlet-name>springServletservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        <init-param>
            <param-name>contextConfigLocationparam-name>
            <param-value>classpath:spring-mvc.xmlparam-value>
        init-param>
        <load-on-startup>1load-on-startup>
    servlet>  
    <servlet-mapping>
        <servlet-name>springServletservlet-name>
        <url-pattern>/url-pattern>
    servlet-mapping>
    
     
    <filter>
        <filter-name>encodingFilterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>UTF-8param-value>
        init-param>
        <init-param>
            <param-name>forceEncodingparam-name>
            <param-value>trueparam-value>
        init-param>
    filter>
    <filter-mapping>
        <filter-name>encodingFilterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>
    
      
    <filter>
        <filter-name>openSessionInViewFilterfilter-name>
        <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilterfilter-class>
    filter>
    <filter-mapping>
        <filter-name>openSessionInViewFilterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>
    
    
    <session-config>   
        <session-timeout>20session-timeout>
    session-config>
    
    
    <error-page>
        <exception-type>java.lang.Throwableexception-type>
        <location>/WEB-INF/error/500.jsplocation>
    error-page>
    <error-page>
        <error-code>500error-code>
        <location>/WEB-INF/error/500.jsplocation>
    error-page>
    <error-page>
        <error-code>404error-code>
        <location>/WEB-INF/error/404.jsplocation>
    error-page>
    <error-page>
        <error-code>400error-code>
        <location>/WEB-INF/error/400.jsplocation>
    error-page>
web-app>

   #有些你不用的,就不要写了。

 
     第三:在spring配置文件中配置quartz任务调度
    

            
    
    
    <bean id="jobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
        
        <property name="durability" value="true" />  
        
        <property name="jobClass" value="test.SpringQuartzTest">property>
        
           
           
    bean>
    
    
    
    
    
     <bean id="cornTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
       <property name="jobDetail" ref="jobDetail"/>
       
       <property name="cronExpression" value="0/10 * * * * ?"/>
    bean> 
    
    
    <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
      <property name="triggers">
        <ref bean="cornTrigger"/>
      property>
    bean>
  #目标类
    

  下面第四步:编写目标类
    
package test;

import java.util.Date;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class SpringQuartzTest extends QuartzJobBean
{

    /*业务实现*/
    public void work() {
        System.out.println("执行调度任务:"+new Date());
    }

    @Override
    protected void executeInternal(JobExecutionContext arg0)
            throws JobExecutionException {
        this.work();
    }
}
#需要继承QuartzJobBean

测试运行结果(这个很重要 能服众)
项目ITP(五) spring4.0 整合 Quartz 实现任务调度_第1张图片

总结

  spring quartz

  

感谢及资源共享

    项目ITP(五) spring4.0 整合 Quartz 实现任务调度_第2张图片

    http://url.cn/RzETYu 加入我的群

    项目ITP(五) spring4.0 整合 Quartz 实现任务调度_第3张图片

    路上走来一步一个脚印,希望大家和我一起。

    感谢读者!很喜欢你们给我的支持。如果支持,点个赞。

    知识来源: 《spring in action》 quartz api

你可能感兴趣的:(项目ITP(五) spring4.0 整合 Quartz 实现任务调度)