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



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

  1. 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>

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


    <bean id="complainCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
     <!-- 设置任务详细 -->
     <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秒时执行对应的方法。

运行结果如下:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值