Cron 表达式包括以下 7 个字段:
秒
分
小时
月内日期
月
周内日期
年(可选字段)
特殊字符
Cron 触发器利用一系列特殊字符,如下所示:
反斜线(/)字符表示增量值。例如,在秒字段中“5/15”代表从第 5 秒开始,每 15 秒一次。
问号(?)字符和字母 L 字符只有在月内日期和周内日期字段中可用。问号表示这个字段不包含具体值。所以,如果指定月内日期,可以在周内日期字段中插入“?”,表示周内日期值无关紧要。字母 L 字符是 last 的缩写。放在月内日期字段中,表示安排在当月最后一天执行。在周内日期字段中,如果“L”单独存在,就等于“7”,否则代表当月内周内日期的最后一个实例。所以“0L”表示安排在当月的最后一个星期日执行。
在月内日期字段中的字母(W)字符把执行安排在最靠近指定值的工作日。把“1W”放在月内日期字段中,表示把执行安排在当月的第一个工作日内。
井号(#)字符为给定月份指定具体的工作日实例。把“MON#2”放在周内日期字段中,表示把任务安排在当月的第二个星期一。
星号(*)字符是通配字符,表示该字段可以接受任何可能的值。
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /
表达式意义
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
每天早上6点
0 6 * * *
每两个小时
0 */2 * * *
晚上11点到早上8点之间每两个小时,早上八点
0 23-7/2,8 * * *
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * 1-3
1月1日早上4点
0 4 1 1 *
实例
public class TestContextListener implements ServletContextListener {
// 日志对象
private Logger logger = Logger.getLogger(this.getClass());
private static Scheduler scheduler = null;
/**
* 服务器初始化
*/
public void contextInitialized(ServletContextEvent event) {
logger.info("服务器初始化");
logger.info("时间:"+new Date());
//初始化定时器对象
getScheduler();
startWeatherCaptureJob();
}
/**
* 天气定时器调度的方法
*/
public void startWeatherCaptureJob() {
try {
CronTrigger cronTrigger = new CronTrigger(
"TestCaptureCronTrigger", "TestCaptureJobGroup");
String expressValue = Messages.getString("expressionvalue");
CronExpression cexp = new CronExpression(expressValue);
cronTrigger.setCronExpression(cexp);
JobDetail jobDetail = new JobDetail("TestCaptureJobGroup",
"TestCaptureJobGroup", TestCaptureJob.class);
if(scheduler != null){
scheduler.scheduleJob(jobDetail, cronTrigger);
scheduler.start();
}else{
logger.info("startWeatherCaptureJob方法===scheduler对象为空");
}
} catch (Exception e) {
logger.error("startWeatherCaptureJob方法异常", e);
logger.error("天气定时调度失败");
}
}
public Scheduler getScheduler(){
if (scheduler == null) {
try {
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
scheduler = schedulerFactory.getScheduler();
} catch (Exception e) {
logger.info("scheduler获取失败");
}
}
return this.scheduler;
}
/**
* 服务器销毁
*/
public void contextDestroyed(ServletContextEvent event) {
scheduler = null;
logger.info("服务器销毁");
String mailTheme ="服务器销毁了";
String mailBody = "服务器挂了,赶紧去看看吧";
SendEmail.sendEmail(mailTheme,mailBody);//发送通知邮件
logger.info("时间:"+new Date());
}
}
分享到:
相关推荐
这个是关于Spring调度器的使用 里面详细介绍了各个时间的表达式,有需要可以下载。
spring mvc quartz 动态设置时间,可以实现任务调度的暂停和重启,在页面实现一个功能,可以动态设置调度的表达式,可以开启暂停任务调度
-- 一个cron表达式有到少6个(也可能是7个)由空格分隔的时间元素.从左到右,这些元素的定义如下: 1.秒(0-59) 2.分钟(0-59) 3.小时(0-23) 4.月份中的是期(1-31) 5.月份(1-12或SUN-DEC) 6.星期中的日期(1-7或SUN-...
动态配置Spring定时器 添加定时任务:/scheduled/add-task 前端传递任务ID,cron表达式、待执行类路径、待执行方法名。 修改定时任务:/scheduled/update-task 前端传递任务ID,cron表达式、待执行类路径、待执行方法...
java spring 定时器(精确启动时间) 完整实例 cronExpression 表达式
Spring自带了多线程设置:quartz,在quartz的设置中,时间字段CronExpression的设置比较纠结,一个Cron表达式是一个由六至七个字段组成由空格分隔的字符串,其中6个字段是必须的而一个是可选的,文档详细讲解了这个...
JdbcDaoSupport、使用 NamedParameterJdbcTemplate、Spring 的声明式事务、事务的属性(传播行为、隔离级别、回滚属性、只读属性、过期时间)、使用 XML 文件的方式配置事务、整合 Hibernate、整合 Struts2 等。
将@Scheduled注解与方法一起使用,指定任务执行的时间表达式。 2.使用Spring的TaskScheduler: Spring提供了TaskScheduler接口和相关实现,用于任务调度。使用TaskScheduler,你可以创建计划执行、定期执行或延迟...
表达式(Spring Express Language) 面向切面编程(AOP) 数据存储(Data Access) JDBC 事务抽象(Transactions) DAO 支持(DAO Support) O/R映射(O/R Mapping) XML 编列(XML Marshalling) Web 技术(Web) Web Servlet 技术...
本文将详细探讨Spring Boot中@Scheduled注解的使用,包括其原理、实现流程、步骤和代码示例。通过本文,读者将能够了解如何在Spring Boot...任务调度器会根据注解中指定的时间间隔或Cron表达式来触发相应的方法执行。
Spring给程序猿们带来了许多便利。下面这篇文章主要给大家介绍了关于Spring @Scheduler使用cron表达式时的执行问题的相关资料,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
-- BOOK定义触发时间 几秒后执行monitor.start.time 每隔monitor.interval.time执行--> <bean id="getPolicyTime" class="org.springframework.scheduling.quartz.CronTriggerBean"> <!-- cron表达式 --> ...
然后,我们详细解释了@Pointcut注解的语法和常用的切点表达式规则。 为了帮助读者更好地理解@Pointcut注解的实际应用,我们提供了一个完整的Spring Boot示例代码,展示了如何创建一个切面类并在其中使用@Pointcut...
在不停服务的情况下,动态修改Spring定时任务的执行周期,即动态修改定时任务的cron参数。
开放时间开源项目管理该项目包含以下技术和框架: Spring WebFlow(Spring面Kong,Spring绑定,Spring js,Spring表达式) Hibernate/Hibernate验证器春天TX 弹簧DI Springjdbc Spring JPA数据碧玉报告JSF 2.2...
mybatis实战教程mybatis in action之五与spring3集成附源码 mybatis实战教程mybatis in action之六与Spring MVC 的集成 mybatis实战教程mybatis in action之七实现mybatis分页源码下载 mybatis实战教程mybatis in ...
支持多种日志格式,例如spring-boot,Android,iOS,Visual Studio等。 从理论上讲,只要您为其编写正则表达式,该工具就可以用于分析任何日志格式。 功能点 1.在ini配置文件中配置正则表达式(REGULAR)后,在...
基于Spring Boot的权限后台管理系统新增功能:1.cron表达式转换器:通过前端界面自动生成cron表达式,方便我们后续创建定时任务时所需要添加的执行时间2.定时任务:开启了多端口多线程执行的定时任务可以执行停止...
使用SpringMVC的验证器完成货物入库输入校验。验证入库时间,以及商品价格是否合理等。主要用到的JSR303中:@Past:验证Date和Calender对象是否在当前时间之前。@Pattern:验证String对象是否符合正则表达式的规则。
3、自定义(自定义功能,用户可以在前台随意定制执行计划,只要符合spring schedule cronExpression语法) 使用说明: 一: /* line 96 */ var action = "edit";//edit,add,view action用来指定用户动作,新增、...