Spring quartz定时器的配置和简单使用

本文详细介绍了在Java项目中如何使用Quartz定时器进行任务调度,包括引入依赖、自定义定时器类、配置Spring、设置触发时间及线程池等关键步骤。同时提供了配置文件解析示例,帮助开发者快速上手Quartz定时器的使用。

各位程序员们,你们好;

Java中常用的定时器有两个,一个是java自带的Timer,还有一个就是 quartz;

这里我简单给大家讲一个我在项目中的Quartz定时器,以及遇到的问题。

1.环境 

该项目使用Maven进行管理,所以我们只需要在POM文件中引入jar包就可以了;注:我用的是Spring 3.2的jar

Code:

<!-- quartz jar -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.1.7</version>
</dependency>

2.Java 自定一个定时器类

自定义定时器的写法有两种,我这个先写一种,另外一种可以单独联系我,我们探讨一下;

Code:

package com.shi.test;

import org.apache.log4j.Logger;

public class TimerManager {

private static Logger debuger = Logger.getLogger(TimerManager.class);


private static int i =0;

public void work() {
System.out.println("---shi.yu----"+(i++));
debuger.info("Quarze 定时器");
}
}

3.将自定义的定时器加入Spring,以及配置Spring.xml文件



<!-- 定时器 要调用的工作类 -->

  <bean id="quartzJob" class=" com.shi.test.TimerManager "></bean> 

<!-- 定义调用对象和调用对象的方法 -->
<bean id="myjob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject">
<ref bean="quartzJob" />
</property>
<!-- 调用类中的方法 -->
<property name="targetMethod">
<value>work</value>
</property>
</bean>
<!-- 定义触发时间 -->
<bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="myjob" />
</property>
<!-- cron表达式 -->
<property name="cronExpression">
<value>0 0 23 * * ?</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>

<property name="quartzProperties">  
            <props>  
                <prop key="org.quartz.scheduler.instanceName">qmsQuartzScheduler</prop>  
                <prop key="org.quartz.scheduler.instanceId">AUTO</prop>  
                <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>  
                <prop key="org.quartz.threadPool.threadCount">1</prop>  
                <prop key="org.quartz.threadPool.threadPriority">5</prop> 
              </props>  
        </property> 
        </bean>

配置文件解析:

<bean id="quartzJob" class=" com.shi.test.TimerManager "></bean> 

将所需要执行的定时器注入到Spring中

<bean id="myjob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject">
<ref bean="quartzJob" />
</property>
<!-- 调用类中的方法 -->
<property name="targetMethod">
<value>work</value>
</property>
</bean>

调用 org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean 这个类,并将一些参数配置进去,

 <property name="targetObject">
<ref bean="quartzJob" />
</property>
 

这个指你需要执行的定时器类 

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

这个指 你需要执行定时器类中的特定的类

org.springframework.scheduling.quartz.CronTriggerFactoryBean该类中需要配置 执行的时间 一般使用cronExpression 进行配置;

cronExpression 写法:

顺序     分钟 小时

序号说明 是否必填 允许填写的值允许的通配符
1 秒 是 0-59   , - * /
2 分 是 0-59   , - * /
    3小时 是 0-23  , - * /
   4 日   1-31  , - * ? / L W
   5 月   1-12 or JAN-DEC  , - * /
   6 周   1-7 or SUN-SAT  , - * ? / L #
7 年 否 empty 或 1970-2099  , - * /

特殊字符: * 表示每一秒 每一份 每一天........

/number 表示每number小时 每number 每number秒  ......

如果说你需要配置一个每天18点执行的程序  ,你的秒 字段中数值需要为0,若为* 号  他会从18点开始 每一秒度执行一次该方法


对应 定时器的线程池我们可以再 org.springframework.scheduling.quartz.SchedulerFactoryBean 

 







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值