1.新建一个job,运行的内容就主要就在job中
package com.fhqiwcw.quartz.train;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class HelloWorldJob implements Job {
@Override
public void execute(JobExecutionContext context)
throws JobExecutionException {
JobDataMap jobDataMap = context.getMergedJobDataMap();
System.out.println("Hello word!");
System.out.println("\t" + jobDataMap.getString("message"));
System.out.println("\t下次运行时间" + context.getNextFireTime());
}
}
2.测试运行
package com.fhqiwcw.quartz.train;
import java.text.ParseException;
import org.quartz.CronTrigger;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;
public class MyMain {
public static void main(String[] args) throws SchedulerException, ParseException {
// 实例化一个Schedule,用于任务的调度
Scheduler schedule = new StdSchedulerFactory().getScheduler();
schedule.start();
// jobDetal job的详细作息,包括job名,要运行job的类
JobDetail jobDetail = new JobDetail("helloworldjob", HelloWorldJob.class);
JobDataMap map = jobDetail.getJobDataMap();
map.put("message", "this is helloworld jobdetail");
jobDetail.setJobDataMap(map);
// 实例化触发器
// 简单的触发器,功能比较单一
//Trigger trigger = new SimpleTrigger("helloworldtriger", 10, 1000);
// CronTrigger 接受cron表达式的触发器,功能很强大
String cronExp = "0/5 * * * * ?";
Trigger trigger = new CronTrigger("helloworldtrigger", Scheduler.DEFAULT_GROUP,cronExp);
schedule.scheduleJob(jobDetail, trigger);
}
}
3.cron表达式简介:
Cron表达式的组件
位置
|
含义
|
允许的特殊字符
|
1
|
秒(
0-59
)
|
,
、
-
、
*
和
/
|
2
|
分(
0-59
)
|
,
、
-
、
*
和
/
|
3
|
小时(
0-23
)
|
,
、
-
、
*
和
/
|
4
|
日期(
1-31
)
|
,
、
-
、
*
、
/
、
?
、
L
、
W
和
C
|
5
|
月(
JAN-DEC
或
1-12
)
|
,
、
-
、
*
和
/
|
6
|
星期(
SUN-SAT
或
1-7
)
|
,
、
-
、
*
、
/
、
?
、
L
、
C
和
#
|
7
|
年(可选,
1970-2099
),
若为空,表示全部时间范围
|
,
、
-
、
*
和
/
|
每一个组件接受一个指定范围的值,如秒和分接受0~59而日期则接受1~31。对于星期或月,你可以使用数字例如星期天数的1~7,或者文本SUN-SAT。
每一个部分也接受一组给定的特殊字符,例如当把"*"放在小时部分时表示每个小时,在星期部分使用一个表达式例如6L表示每个月最后一个星期五。表12-2说明了Cron的通配符和特殊字符。
Cron表达式的通配符和特殊字符
特殊字符
|
说明
|
*
|
任意值。这个特殊字符可以被使用在表达式的任何域,
表示不应该检查该值。因此,我们的
Cron
表达式可以在
1970
~
2099
年的任意一天,任意月份和星期中的任意一天触发
|
?
|
无特定值。此特殊字符通常和其他指定的值一起使用,
表示必须显示该值但不能检查
|
-
|
范围。例如小时部分
10-12
表示
10:00
、
11:00
和
12:00
|
,
|
列分隔符。此特殊字符可以让你指定一系列的值,
例如在星期域中指定
MON
、
TUE
和
WED
|
/
|
增量。此特殊字符表示一个值的增量,例如
0/1
表示从
0
开始,
每次增加
1 min
|
L
|
L
是英文单词
Last
的缩写。它在日期和星期域中表示有一点不同,
挡在日期域中使用时,表示这个月的最后一天(
3
月
31
日
、
2
月
29
日等)。当使用在星期域时,它永远是同一个值:
7
——
星期六。当你希望使用星期中某一天时,
L
字符非常有用。例如,
星期域中
6L
表示每个月的最后一个星期五
|
W
|
W
只可以用在月域部分的天字段,指定临近一周(星期一到星期五)
给该月的既定日期。设置值
7W
,触发器若第
7
此触发在一个星期六,
那么它将在第六天触发。若第七天是星期日,触发器将在星期一触发,
即第八天。注意触发器由于周六是第一天,实际触发发生在第三天
|
#
|
此特殊字符可使用在星期域中,表示该月的第几个星期。
例如
1#2
表示每个月的第一个星期一
|
C
|
日历值。它可以使用在日期和星期域中。日期值是根据一个
给定的日历计算出来的。在日期域中给定一个
20C
将在
20
日
(日历包括
20
日)或
20
日后日历中包含的第一天(不包括
20
日)
激活触发器。例如在一个星期域中使用
6C
表示日历中星期五
(日历包括星期五)或者第一天(日历不包括星期五)
|
分享到:
相关推荐
这个"quartz的helloworld"示例旨在教你如何在Tomcat服务器上配置和使用Quartz来定期执行一个简单的任务——每五秒钟打印出"Hello, World!"。 首先,Quartz的核心概念包括Job(工作)和Trigger(触发器)。Job是实际...
这是quartz定时器的一个helloworld例子,主要用到的是其中的quartz需要的jar,在lib文件夹中,需要学习的quartz的,可以下载我上传的quartz文档,里面有详细介绍quartz怎么使用。
在这个例子中,Job类可能会有一个名为`execute`的方法,该方法会在每次触发时被调用,并打印出"helloWorld"到控制台。Job类需要实现Quartz的`org.quartz.Job`接口,并且通常会自定义一个实现类。 2. **Trigger**:...
在这个"一个简单的quartz、spring集成版helloWorld示例演示"中,我们将探讨如何将这两个框架结合使用,实现一个基础的定时任务。 首先,Quartz的集成通常涉及到Spring的`SchedulerFactoryBean`,这个bean负责管理和...
总之,"spring-boot-helloworld.zip" 压缩包提供了一个 Spring Boot 入门的例子,通过这个例子,你可以学习到如何创建、配置和运行一个基本的 Spring Boot 应用,并理解其核心概念。这将是你进一步探索 Spring Boot ...
这表明我们的Job类会包含一个`execute`方法,该方法会在满足特定Trigger条件时(即每分钟的6秒、18秒、30秒等)被调用,打印出"helloWorld"。 为了实现这个定时任务,我们需要以下步骤: 1. **定义Job**:创建一个...
JobDetail jobDetail = new JobDetail("job1", "group1", HelloWorld.class); // 创建一个触发器,并命名为 ‘trigger1’,将此触发器设置在 ‘job1’ 上 SimpleTrigger simpleTrigger = new SimpleTrigger(...
Spring版 timer HelloWorld”这一主题,它是Spring框架与Java定时任务处理的一个简单示例。通过这个实例,我们可以了解如何在Spring应用中使用Timer进行定时任务的执行。 首先,让我们明确什么是Timer。在Java中,...
首先,定义一个实现 `Job` 接口的类,如 `HelloJob`,它会在执行时输出 "Hello World!": ```java import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; ...
在这个例子中,`/hello` 是请求的路径,当用户访问 `/hello` 时,服务器将返回一个 JSON 对象,内容是 `{"message":"Hello, Spring Boot!"}`。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,...
<job-class>Helloworld</job-class> </job-detail> <trigger> <cron> <!-- trigger 的名字 --> <name>test-trigger</name> <group>DEFAULT</group> <!-- trigger对应的job的相关信息 -->...
在Quartz中,一个简单的“Hello,World”例子可以帮助新手用户快速上手。用户通过调度QuartzScanDirectoryJob等示例作业来掌握Quartz作业调度的基本概念。通过声明式部署Job,Quartz支持更加灵活的作业调度方式。 ...
System.out.println("Hello World! - " + new Date()); // 具体业务逻辑... } } // 调度Job public class quartzTest { public static void main(String[] args) throws SchedulerException, ParseException { ...
例如,`@GetMapping("/hello")` 可以用来处理 GET 请求,返回 "Hello, World!"。 5. **后台逻辑**:`@Service` 注解用于标记业务逻辑层的类,这些类通常会包含一些处理数据和业务规则的方法。你可以使用 `@...
它集成了大量常用的第三方库配置,如 JDBC、MongoDB、JPA、RabbitMQ、Quartz 等,使得开发者能够快速地创建出稳定且生产级别的基于 Spring 的应用。 在“spring boot restful服务小例子”中,我们重点讨论的是如何...
该项目包含helloworld(快速入门)、web(ssh项目快速搭建)、aop(切面编程)、data-redis(redis缓存)、quartz(集群任务实现)、shiro(权限管理)、oauth2(四种认证模式)、shign(接口参数防篡改重放)、encoder(用户...
4. **Hello World示例**: 压缩包中的`springboot-hello`可能是一个简单的"Hello, World!"应用程序。通常,它会包含一个`Application`类,标记为`@SpringBootApplication`,该注解集成了`@Configuration`,`@...
在示例中,HelloWorldController使用@RestController和@RequestMapping注解来定义一个HTTP端点,该端点返回"hello world!"的JSON响应。这种方式展示了Spring如何通过注解驱动的编程,减少手动配置,提高开发效率。 ...
2. **Chapter 2**:可能是关于Spring的环境搭建和基本概念的介绍,源代码可能包含简单的Hello World程序,演示了如何创建一个Spring项目,配置Spring环境,并执行一个基本的Spring应用。 3. **Chapter 7**:通常...