大家好,很高兴再次与大家见面,我是你们的朋友全栈君。
一、Quartz简介
在企业应用中,我们常常需要处理定时任务调度,比如每天凌晨生成前一天的报表,每小时生成一次汇总数据等。Quartz是一个著名的任务调度框架,它可以与J2SE和J2EE应用结合,功能非常强大,易于与Spring集成,使用起来非常便捷。
二、Quartz的核心概念
Quartz有三个主要概念:调度器、任务和触发器。简单来说,调度器负责调度各个任务,当某个时刻到来或经过一定时间后,触发器被激活,从而启动特定任务。相关的类和接口包括:
立即学习“Java免费学习笔记(深入)”;
1)JobDetail:顾名思义,用于描述任务的相关信息;
2)Trigger:描述触发Job执行的时间规则。它有两个子类:SimpleTrigger和CronTrigger,前者用于每隔一定时间执行,后者用于定义日历相关的重复时间间隔,如每天凌晨或每周一运行,通过Cron表达式可以定义复杂的调度方案。
3)Scheduler:代表一个独立运行的Quartz容器,Trigger和JobDetail需要注册到Scheduler中才能生效,即让调度器知道有哪些触发器和任务,以便按规则调度任务。
三、在Spring中使用Quartz
1,所需的jar包:quartz.jar,spring.jar,commons-collections-3.2.jar;
2,添加业务逻辑类(简单示例):
public class UserHeartBeat {
public void Show() {
Calendar cal = Calendar.getInstance();
long date = cal.getTime().getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
String result = sdf.format(date);
System.out.println(result);
System.out.println("Spring Quartz Test");
}
public static void main(String args[]) {
new UserHeartBeat().Show();
}}
这个类定义了每隔一段时间要执行的操作。
3,配置文件(applicationContext.xml) 用于配置定时任务:
http://www.springframework.org/dtd/spring-beans.dtd">
Show
10,15,20,25,30,35,40,45,50,55 ?
其中,间隔时间的配置说明见定时任务配置的间隔配置说明。
4.在主配置文件web.xml中注册定时任务的配置文件(applicationContext.xml)
spring
org.springframework.web.context.ContextLoaderServlet
1
spring
*.do
contextConfigLocation
/WEB-INF/classes/ApplicationContext.xml
5.定义一个测试类来调用定时任务
public static void main(String[] args) {
System.out.println("Spring Quartz test start...");
ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml");
// 如果配置文件中将startQuertz bean的lazy-init设置为false 则不用实例化
System.out.println("Spring Quartz test end...");
}运行效果图如下:

案例下载地址:实用的spring+quartz实现定时任务-源码世界
发布者:全栈程序员栈长,转载请注明出处:https://www.php.cn/link/ebe44c013549fd1a935942582bea7b80
原文链接:https://www.php.cn/link/c8377ad2a50fb65de28b11cfc628d75c











