美文网首页陈大志的 Java 笔记
Spring 实战 (一) | Spring + quartz

Spring 实战 (一) | Spring + quartz

作者: JavaFish | 来源:发表于2018-11-28 21:37 被阅读38次

    微信公众号:一个优秀的废人
    如有问题或建议,请后台留言,我会尽力解决你的问题。

    quartz

    前言

    很久不见,因为忙着泡妞,断更了一个月,实在是罪过。废话不多说,最近在工作中遇到了使用 quartz 实现定时任务的需求。写出来分享给大家,权当笔记。

    Spring + quartz 实现定时任务

    因为在开发中遇到的是非 Maven 的老项目,所以先介绍这种方式。这种实现方式更多的是 xml 的配置。

    1. 首先在 lib 目录下加入 quartz 这l两个jar包


      quartz.jar
    1. Scheduler(任务调度器)的配置
      在 applicationContext.xml 加入 Scheduler 的配置
    <bean id="MyScheduler"
            class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="MyTriggers"></ref>
            </list>
        </property>
        <property name="autoStartup" value="true"></property>
    </bean>
    
    1. Trigger(触发器)的配置,这里设置了逢5分钟的倍数执行一次
    <bean id="MyTriggers"
            class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="MyJobDetail"></property>
        <property name="cronExpression">
            <!--<value>0 */1 * * * ?</value>-->
            <!--<value>0 */5 * * * ?</value>-->
            <!-- 早上八点执行 -->
            <!--<value>0 0 8 * * ?</value>-->
            <!-- 逢5分钟的倍数执行一次 -->
            <value>0 */5 * * * ?</value>
        </property>
    </bean>
    
    1. JobDetail(任务,即被调度的任务)的配置
    <bean id="MyJobDetail"
            class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <!-- 执行的类 -->
        <property name="targetObject" ref="MyJobService"></property>
            <!-- 类中的方法 -->
        <property name="targetMethod" value="doSomething"></property>
        <property name="concurrent" value="false"/>
        <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
    </bean>
    
    1. 业务类的配置
    <bean id="oltJobService" class="com.nasus.service.quartz.MyJobService">
        <property name="MyDao" ref="MyDao" />
            <!-- 注入属性 -->
    </bean>
    
    1. 业务实现
    import java.util.Date;
    
    public class MyJobService {
    
        public void doSomething() {
            System.out.println("date: " + new Date().getTime());
        }
    }  
    
    1. 启动项目就可以看到控制台每隔五分钟就打印一次当前时间

    后语

    以上就是我对 Spring + quartz 的使用理解,希望对你们有帮助。最后,对 Python 、Java 感兴趣请长按二维码关注一波,我会努力带给你们价值,如果觉得本文对你哪怕有一丁点帮助,请帮忙点个赞。

    一个优秀的废人

    相关文章

      网友评论

        本文标题:Spring 实战 (一) | Spring + quartz

        本文链接:https://www.haomeiwen.com/subject/bigzqqtx.html