spring整合quartz框架前言:quartz简介:spring整合quartz:总结:

前言:

在一些项目中,往往需要定时的去执行一些任务,比如商城项目,每天0点去统计前一天的销量。那么如何实现呢,总不可能我们每天0点手动的去执行统计销量的方法吧,这时就quartz就起作用了。

quartz简介:

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 2.3.0。 以上是百度百科介绍,我们可以简单的理解其为一个定时调度工具(定时器)。

spring整合quartz:

网上也有很多教程,好多都是基于配置方式,我们使用当然怎么简单就怎么用,所以这里介绍基于注解方式整合quartz。前提:你需要有一个能运行的web项目。 1、引依赖:

       <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.3.0</version>
        </dependency>

注意:网上有的教程说还必须引入spring-context-support依赖,但是本项目没有引入这个也可以正常使用quartz,可能是最新版不需要这个依赖了。

2、开启quartz的注解: 一般我们都在service层使用quartz,所以在spring-service.xml中进行如下配置:

 <context:component-scan base-package="com.zhu.meilianMall.service" />
 <task:annotation-driven/>

注意:第一行扫描包的配置是ssm整合本来就需要的,等下quartz的注解也只能在这个包下使用。

3、使用quartz的注解:com.zhu.meilianMall.service包下创建测试类,在需要定时执行的方法上加上@Scheduled(cron = "cron表达式"),如下:

package com.zhu.meilianMall.service;

import java.util.Date;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;

/**
 * 测试quartz
 * @author zhu
 *
 */
@Service
public class QuartzTest {
    @Scheduled(cron = "0/2 * * * * ?")
    public void run() {
        System.out.println("############### quartz整合成功! "+new Date()+"#####################");
    }

}

注意:既然是在service层测试,测试类不要忘了加@Service注解;cron表达式不会写没关系,百度一下“cron表达式在线生成器”,就会有很多,这里也给出一个:在线cron表达式生成器。本案例中是每隔2秒执行一次run方法。

4、测试: 启动tomcat访问项目,然后控制台就打印出run方法的执行结果了。

image.png

run方法每隔两秒打印一次,整合成功!

总结:

本人对于quartz并不了解,其功能也不止本案例中提及的。不过与spring整合确实够简单,只需要引依赖、开启注解、使用注解3步即搞定。

以上内容属于个人笔记整理,如有错误,欢迎批评指正!

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏巫山跬步

让事件飞——Linux eventfd 原理

目前越来越多的应用程序采用事件驱动的方式实现功能,如何高效地利用系统资源实现通知的管理和送达就愈发变得重要起来。在Linux系统中,eventfd是一个用来通知...

1.6K350
来自专栏Java职业技术分享

如果你想搞懂“分布式锁”,必须要看这篇文章 ,看了很意外!

对于锁大家肯定不会陌生,在 Java 中 synchronized 关键字和 ReentrantLock 可重入锁在我们的代码中是经常见的,一般我们用其在多线程...

5.8K30
来自专栏魏艾斯博客www.vpsss.net

WordPress 博客去除 category 的几种方法

WordPress 默认路径自带 category 目录,如果不去除最后文章网址会多一个/category/,为了去掉这个无用的路径,我们可以采取插件和代码的方...

11730
来自专栏idba

如何做一个靠谱的发号器

在使用数据库时,表的主键经常会使用数据库的自增(auto_increment)来产生。这当然很方便也很高效。但是使用自增也会带来一些麻烦。如果从一个数据库以外的...

15860
来自专栏逸鹏说道

变种XSS:持久控制

0x00 引言 首先声明,这不是一个新洞,看过 Homakov 文章(最后附)以及译文的人想必对这种漏洞有所了解。 但原文写的太过简单(没有说明利用条件、情景和...

41860
来自专栏Java帮帮-微信公众号-技术文章全总结

day03.集群部署zookeeper【大数据教程】

day03.集群部署zookeeper【大数据教程】 一、Nginx/keepalived/lvs的介绍 1. nginx 1.1. nginx简介 Ngin...

49980
来自专栏哲学驱动设计

性能优化总结(六):预加载、聚合SQL应用实例

    前面已经把原理都讲了一遍,这篇主要是给出一个应用的实例。该实例取自GIX4,比较复杂。 领域模型:     领域模型间的关系,如下: ? 右边模型链的具...

40450
来自专栏分布式系统进阶

记一次Kafka集群的故障恢复Kafka源码分析-汇总

39630
来自专栏石奈子的Java之路

原 荐 Java9 Module解惑

24740
来自专栏极客猴

Python 多进程与多线程

如果你把上篇多线程和多进程的文章搞定了,那么要恭喜你了 。你编写爬虫的能力上了一个崭新的台阶。不过,我们还不能沾沾自喜,因为任重而道远。那么接下来就关注下本文的...

15010

扫码关注云+社区

领取腾讯云代金券