前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA | Spring + quartz 实现定时任务

JAVA | Spring + quartz 实现定时任务

作者头像
JavaFish
发布2019-10-17 17:08:36
5630
发布2019-10-17 17:08:36
举报
前言

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

Spring + quartz 实现定时任务

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

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

quartz.jar

  1. Scheduler(任务调度器)的配置 在 applicationContext.xml 加入 Scheduler 的配置
代码语言:javascript
复制
<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分钟的倍数执行一次
代码语言:javascript
复制
<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(任务,即被调度的任务)的配置
代码语言:javascript
复制
<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. 业务类的配置
代码语言:javascript
复制
<bean id="oltJobService" class="com.nasus.service.quartz.MyJobService">
    <property name="MyDao" ref="MyDao" />
        <!-- 注入属性 -->
</bean>
  1. 业务实现
代码语言:javascript
复制
import java.util.Date;

public class MyJobService {

    public void doSomething() {
        System.out.println("date: " + new Date().getTime());
    }
}  
  1. 启动项目就可以看到控制台每隔五分钟就打印一次当前时间
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一个优秀的废人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Spring + quartz 实现定时任务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档