quartz的使用

5 篇文章 0 订阅
2 篇文章 0 订阅

quartz是用来做定时任务的,可以单独使用,也能在框架中使用,这里主要是想要介绍一下在spring中的使用。spring框架已经将quartz功能集成到框架中,也就是在spring.springframework.scheduling中直接就会有quartz。
使用步骤:
1.将quartz的包导入到项目中,因为我是在maven的项目中,所以在pom中添加一下依赖

            <dependency>
                <groupId>org.quartz-scheduler</groupId>
                <artifactId>quartz</artifactId>
                <version>${quartz.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>c3p0</groupId>
                        <artifactId>c3p0</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

spring中已经集成了这个quartz的工具类,为什么还要重新导入包呢,这是因为spring的版本和quartz之间版本兼容的原因。之所以会在这里说出这个错误,是因为使用的时候,已经有了这个导入的包,但是总会报错,所以说这也是为了避免一个小小的坑。

2.当然就是配置的问题了,下面是具体配置

    <!--
        部门用户信息自动更新任务
    -->
    <!--需要调用的方法-->
    <bean id="SyncDingDepartmentToSystemTask" class="com.mypro.poa.syn.SyncDingDepartmentToSystemTask"></bean>
    <bean id="SyncDingUserToSystemTask" class="com.mypro.poa.syn.SyncDingUserToSystemTask"></bean>
    <!--同步任务1-->
    <bean id="jobTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!--实体类-->
        <property name="targetObject" ref="SyncDingDepartmentToSystemTask"/>
        <!--具体方法一-->
        <property name="targetMethod" value="task1"/>
    </bean>
    <!--同步任务2-->
    <bean id="jobTask2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="SyncDingUserToSystemTask"/>
        <property name="targetMethod" value="task2"/>
    </bean>

    <!--定义触动器-->
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <!--触发的事件-->
        <property name="jobDetail" ref="jobTask"/>
        <!--定义触发时间-->
        <property name="cronExpression" value="30 45 8 * * ?"/>
    </bean>
    <bean id="cronTrigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="jobTask2"/>
        <property name="cronExpression" value="30 45 8 * * ?"/>
    </bean>
    <bean id="schedulerFactoryBean" lazy-init="false" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="cronTrigger"/>
                <ref bean="cronTrigger2"/>
            </list>
        </property>
    </bean>

这个配置中的参数含义是:

字段      允许值                 允许的特殊字符 
秒           0-59                    , - * / 
分           0-59                    , - * / 
小时      0-23                    , - * / 
日期      1-31                    , - * ? / L W C 
月份      1-12 或者 JAN-DEC         , - * / 
星期      1-7 或者 SUN-SAT      , - * ? / L C # 
年(可选)   留空, 1970-2099           , - * /

提醒一下:在配置当中,前面的步骤相当于在准备工作,而最终要把这些需要执行的任务放在triggers的list,这样子才能被加载执行。

3.要执行的任务

public class SyncDingDepartmentToSystemTask{
    public void task1(){
        System.out.print("quartz1任务完成");
    }
}
---------------------------
public class SyncDingUserToSystemTask{
    public void task1(){
        System.out.print("quartz2任务完成");
    }
}

一个任务最好是对应一个方法,这样有利于任务的正常执行。如果同一个类中有多个方法,并且他们不相互影响,那么就可以将这些方法一次性调用。另外也能利用线程来达到目的,这里就不做展示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值