您的位置:首页 > 编程语言 > Java开发

Java项目中使用Quartz开源任务调度框架(SSH项目)

2016-12-23 20:57 776 查看


Quartz是一个完全由java

编写的开源作业调度框架。
在spring中整合Quartz
进行任务调度;首先将需要用到的jar包引入项目的lib目录下jar包的下载在Quartz的官网,Quartz的官网:http://www.quartz-scheduler.org/;
需要两个jar包,“org.springframework.context.support-3.0.2.RELEASE.jar”此包是spring根据quartz中的主要类进行再次封装成具有bean风格的类;
“quartz-1.8.6.jar”
quartz的核心包

现在spring中配置基本的bean
<bean id="mytask" class="com.xcm.nsfu.complain.service.MyTask"></bean>

要在spring
中利用quartz调度任务;需要配置三个bean:

jobDetail 任务详细信息;包括调用哪个类;类中的哪个方法;执行时是否可并行执行任务。<!-- 1、制定任务信息信息 -->

 <bean id="complainJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

 <!-- 设置执行对象 -->

 <property name="targetObject" ref="mytask"></property>

 <!-- 设置执行对象中对应的执行方法 -->

 <property name="targetMethod" value="doMyTask"></property>

  <!-- 是否可以同步执行;不可同步执行 -->

 <property name="concurrent" value="false"></property>

 </bean>

trigger 任务调度触发器;主要用于定义jobDetail什么时候执行。触发器最常用的有两种:简单触发器SimpleTrigger
和任务触发器CronTrigger
。SimpleTrigger和jdk的timer类似,只能指定任务执行以什么样的频率执行,但无法制定精确的执行时间。CronTrigger则既可以执行简单触发器所制定的以频率来执行的时间,也可以制定复杂的时间计划来执行。如可制定:每个月的最后一天的15点来执行相关任务。

<bean id="complainCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">

 <!-- 设置任务详细 --&g
4000
t;

 <property name="jobDetail" ref="complainJobDetail"></property>

 <!-- 设置任务执行时机,cron表达式 -->

 <property name="cronExpression" value="5,10,15,20 * * * * ?"></property>

 </bean>
在表达式中时间格式间用空格隔开,每个时间表示:秒分钟
小时
日 月

年(可选填)。

3.schedulerFactory 任务调度工厂;用于调度各个任务触发器。<!-- 3、设置调度工厂 -->

 <bean id="complainSchedule" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

 <property name="triggers">

 <list>

   <!-- <ref bean="simplerTrigger"/> -->

   <ref bean="complainCronTrigger"/>

 </list>

 </property>

 </bean>

类MyTask代码如下:

public class MyTask {

 public void doMyTask(){

  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

  System.out.println("正在用Quartz执行任务调度......"+sdf.format(new Date()));

 }

}

配置文件中<property name="cronExpression" value="5,10,15,20 * * * * ?"></property>表示在任意天的任意时任意分的第5,10,15,2o秒时执行对应的方法。

运行结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: