JAVA | Spring + 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. 启动项目就可以看到控制台每隔五分钟就打印一次当前时间

本文分享自微信公众号 - 一个优秀的废人(feiren_java)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Linux驱动

16.XML语法、CDATA、约束(DTD、Schema)讲解

xml主要用来描述数据,比如配置文件,网络之间传输数据等,并且在android中也经常用xml来布局,,接下来便来学习xml常用的东西

10210
来自专栏小白帽学习之路

后台的安全防范

我这里做的第一步是做敏感目录扫描(自己的特有字典),跑出一处某程序控制台登入界面(尝试弱口令进入)

9130
来自专栏海向

使用Spring中的PropertyPlaceholderConfigurer读取文件

注意:我们知道不论是使用 PropertyPlaceholderConfigurer 还是通过 context:property-placeholder 这种方...

12930
来自专栏安卓圈

SpringBoot集成MyBatis

各位应该都了解SSH和SSM工程搭建时候需要各种配置代码,还要Tomcat配置,非常麻烦

7310
来自专栏安卓圈

MyBatis注解开发

指的是MyBatis中SqlSession对象的缓存,当我们执行查询之后,查询的结果会同时存入到SqlSession为我们提供一块区域中。

8720
来自专栏Linyb极客之路

springboot实战之ORM整合(mybatis篇)

本文会介绍一下springboot与mybatis、mybatisplus如何进行整合,文章篇幅会有点长

14930
来自专栏java大数据

SpringMVC和Mybatis的整合的工作原理

在做这个项目之前,我们的前提条件是:你已经有一个能运行的SpringMVC的最简单的项目了。请同学们参考我的SpringMVC那章。做这个项目关键在于导包,请参...

12240
来自专栏安卓圈

Struts2的配置

1.IntelliJ自动生成的web.xml中filter-class报错,是因为Struts2-2.5版本修改了

8420
来自专栏ChaMd5安全团队

phpstudy后门文件分析以及检测脚本

2019.9.20得知非官网的一些下载站中的phpstudy版本存在后门文件,基于研究的目的,于是有了以下这文。

20530
来自专栏安卓圈

SpringAOP

动态代理分两种 JDK动态代理:只能对实现了接口的类产生代理 Cglib动态代理:第三方代理技术,对没有实现接口的类产生代理对象,生成子类对象,可以动态添加类的...

7820

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励