zoukankan      html  css  js  c++  java
  • Spring框架下的定时任务quartz框架的使用

      手头的这个项目需要用到定时任务,但之前没接触过这东西,所以不太会用,从网上找资料,大致了解了一下,其实也不难。Java的定时任务实现有三种,一种是使用JDK自带的Timer那个类来实现,另一种是使用quartz框架来实现,最后一种是在项目使用Spring框架的情况下用Spring框架来实现。JDK自带的类是单线程的,而且只能定义特定时间去执行任务,而不能指定任务执行的频率,所以一般用的较少,只有处理一些简单的程序才会用到。而quartz是一个轻量级的框架,支持多线程,支持定义频率,所以非常方便。我目前手头这个就是用了SSM框架,所以就用quartz来实现了。下面是详细步骤。

    1.在项目中导入jar包(之前看资料,别人说Spring框架自带quartz,直接可以使用,但自己实践时发现有几个方法不存在,所以就下载jar包导入了)

    Spring的jar包自然是必须的,然后在quartz官网下载jar包(Quartz 2.1.7),解压后导入下面两个包。

    另外要说明的是,Spring框架中必须要有 spring-context-support-4.2.6.RELEASE.jar这个包,配置时好多类都依赖于这个包,所以必须得有。

    后来还发现一个问题,就是spring-beans-4.2.6.RELEASE.jar这个jar包的版本不能太低,4.2.6没问题,但目前已经经过测试得知3.0.5版本绝对会出现无法创建所需要的类的错误信息,出现这种错误只需要再加一个高版本的beans包就可以。

    2.在Spring的配置文件头部定义以下信息

    1 xmlns:task="http://www.springframework.org/schema/task"
    2 xsi:schemaLocation="http://www.springframework.org/schema/beans
    3                     http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
    4                     http://www.springframework.org/schema/task 
    5                     http://www.springframework.org/schema/task/spring-task-3.0.xsd 

    3.写好自己需要执行的业务逻辑代码

     1 package com.msq;
     2 
     3 public class  TestJobTask{  
     4     /** 
     5      *业务逻辑处理 
     6      */  
     7       public void   service(){  
     8           /**业务逻辑*/  
     9               System.out.println(System.currentTimeMillis());
    10       }  
    11 }

    4.在Spring里面继续作如下配置:

     1     <!-- 定时任务start -->
     2 
     3     <!-- 线程执行器配置,用于任务注册 -->
     4     <bean id="executor"
     5         class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
     6         <property name="corePoolSize" value="10" />
     7         <property name="maxPoolSize" value="100" />
     8         <property name="queueCapacity" value="500" />
     9     </bean>
    10 
    11     <!-- 业务对象 -->
    12     <bean id="testJobTask" class="com.msq.TestJobTask" />
    13 
    14     <!-- 调度业务 -->
    15     <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    16         <property name="targetObject" ref="testJobTask" />
    17         <property name="targetMethod" value="service" />
    18     </bean>
    19 
    20     <!-- 增加调用的触发器,触发时间 -->
    21     <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    22         <property name="jobDetail" ref="jobDetail" />
    23         <property name="cronExpression" value="0/5 * * * * ? *" />
    24     </bean>
    25 
    26     <!-- 设置调度 -->
    27     <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    28         <property name="triggers">
    29             <list>
    30                 <ref bean="cronTrigger" />
    31             </list>
    32         </property>
    33         <property name="taskExecutor" ref="executor" />
    34     </bean>
    35 
    36     <!-- 定时任务end -->

    到此,就配置完了,部署项目到Tomcat,就可以运行了,可以看到在控制台每隔五秒就会输出当前时间。

  • 相关阅读:
    www.insidesql.org
    kevinekline----------------- SQLSERVER MVP
    Sys.dm_os_wait_stats Sys.dm_performance_counters
    如何使用 DBCC MEMORYSTATUS 命令来监视 SQL Server 2005 中的内存使用情况
    VITAM POST MORTEM – ANALYZING DEADLOCKED SCHEDULERS MINI DUMP FROM SQL SERVER
    Cargo, Rust’s Package Manager
    建筑识图入门(初学者 入门)
    Tracing SQL Queries in Real Time for MySQL Databases using WinDbg and Basic Assembler Knowledge
    Microsoft SQL Server R Services
    The Rambling DBA: Jonathan Kehayias
  • 原文地址:https://www.cnblogs.com/plumsq/p/6867094.html
Copyright © 2011-2022 走看看