iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >spring执行定时任务
  • 384
分享到

spring执行定时任务

2023-06-03 07:06:40 384人浏览 八月长安
摘要

定义一个任务是很简单的实现TimerTask的run方法就可以了.如下:SayHelloTask.javapackage test.timerTask;import java.util.TimerTask;public class SayH

定义一个任务是很简单的实现TimerTask的run方法就可以了.

如下:SayHelloTask.java

package test.timerTask;
import java.util.TimerTask;
public class SayHelloTask extends TimerTask {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("测试TimerTask : Hello !!");
}
}

然后是配置文件:

xml version="1.0" encoding="UTF-8"?>

DOCTYPE beans PUBLIC "-//spring//DTD BEAN//EN" "spring-beans.dtd" >
<
beans>
<
bean id="sayHelloTask" class="test.timerTask.SayHelloTask">bean>
<
bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<
property name="timerTask">
<
ref bean="sayHelloTask"/>
property>

<!-- 任务执行周期 2m 关于一些任务的参数请参考jdk doc文档和Spring相关文档-->

<property name="period">
<
value>2000value>
property>

<!-- 延时1m 执行任务 -->

<property name="delay">
<
value>1000value>
property>
bean>

<!-- 启动定时器 -->

<bean id="timerBean" class="org.springframework.scheduling.timer.TimerFactoryBean">
<
property name="scheduledTimerTasks">
<
list>
<
ref bean="scheduledTask"/>
list>
property>
bean>
beans>
测试类如下:TestApp.java

package test.timerTask;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestApp {


public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext context = new ClassPathXmlApplicationContext("test/timerTask/javaTimer.xml");
// ApplicationContext context2 = new ClassPathXmlApplicationContext("test/timerTask/quartzTimer.xml");
}
// 只要加载配置文件就可以了,
}

使用Java中的定时器比较简单,其提供的任务也比较简单, 下面来看看使用quartz来执行一个复杂的任务.

首先制定一个任务, 实现QuartzJobBean中的方法.

package test.timerTask;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class SayHelloTaskUsingQuartz extends QuartzJobBean {

@Override
protected void executeInternal(JobExecutionContext context)
throws JobExecutionException {
// TODO Auto-generated method stub
System.out.println("使用Quartz 认为调度: Hello!!");
}

}

配置代码如下:quartzTimer.xml

xml version="1.0" encoding="UTF-8"?>
DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "spring-beans.dtd" >
<
beans>
<
bean id="sayHelloJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<
property name="jobClass">
<
value>test.timerTask.SayHelloTaskUsingQuartzvalue>
property>
bean>

<!-- 关键在如下两个触发器的配置 -->
<!-- 类似于Java的简单触发器 -->

<bean id="helloTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<
property name="jobDetail">
<
ref bean="sayHelloJob"/>
property>
<
property name="startDelay">
<
value>1000value>
property>
<
property name="repeatInterval">
<
value>3000value>
property>
bean>

<!-- 复杂触发器 -->

<bean id="helloCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<
property name="jobDetail">
<
ref bean="sayHelloJob"/>
property>
<
property name="cronExpression">
<!-- 关键在配置此表达式 -->
<
value>0 49 15 * * ?value>
property>
bean>
<
bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<
property name="triggers">
<
ref bean="helloCronTrigger"/>
property>
bean>
beans>

关于简单触发器和复杂触发器,查考下面的解释:

Quartz设计者做了一个设计选择来从调度分离开作业。Quartz中的触发器用来告诉调度程序作业什么时候触发。框架提供了一把触发器类型,但 两个最常用的是SimpleTrigger和CronTrigger。SimpleTrigger为需要简单打火调度而设计。典型地,如果你需要在给定的 时间和重复次数或者两次打火之间等待的秒数打火一个作业,那么SimpleTrigger适合你。另一方面,如果你有许多复杂的作业调度,那么或许需要 CronTrigger。

CronTrigger是基于Calendar-like调度的。当你需要在除星期六和星期天外的每天上午10点半执行作业时,那么应该使用CronTrigger。正如它的名字所暗示的那样,CronTrigger是基于Unix克隆表达式的。

作为一个例子,下面的Quartz克隆表达式将在星期一到星期五的每天上午10点15分执行一个作业。
0 15 10 ? * MON-FRI

下面的表达式
0 15 10 ? * 6L 2002-2005
将在2002年到2005年的每个月的最后一个星期五上午10点15分执行作业。

你不可能用SimpleTrigger来做这些事情。你可以用两者之中的任何一个,但哪个跟合适则取决于你的调度需要。

更多详细介绍参考此处:

关于cronExpression的介绍:

字段 允许值 允许的特殊字符
0-59 , - * /
0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /

如上面的表达式所示:

详细说明如下:

The '*' character is used to specify all values. For example, "*" in the minute field means "every minute".

“*”字符被用来指定所有的值。如:”*“在分钟的字段域里表示“每分钟”。

The '?' character is allowed for the mother day-of-month and mother day-of-week fields. It is used to specify 'no specific value'. This is useful when you need to specify something in one of the two fileds, but not the other. See the examples below for clarification.

“?”字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候,它是有用的。看下面的例子你就会明白。

The '-' character is used to specify ranges For example "10-12" in the hour field means "the hours 10, 11 and 12".

“-”字符被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”。

The ',' character is used to specify additional values. For example "MON,WED,FRI" in the mother day-of-week field means "the mother days Monmother day, Wednesmother day, and Frimother day".

“,”字符被用来指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”.

--结束END--

本文标题: spring执行定时任务

本文链接: https://www.lsjlt.com/news/233592.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • spring执行定时任务
    定义一个任务是很简单的实现TimerTask的run方法就可以了.如下:SayHelloTask.javapackage test.timerTask;import java.util.TimerTask;public class SayH...
    99+
    2023-06-03
  • Job定时任务如何在Spring Boot中执行
    这篇文章给大家介绍Job定时任务如何在Spring Boot中执行,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一,@scheduled注解@scheduled这个注解是定时任务的核心所在,在某个方法上面标记此注解,即...
    99+
    2023-05-31
    springboot 定时任务 job
  • spring定时器定时任务到时间未执行问题的解决
    目录spring定时器定时任务到时间未执行应用场景原因分析解决方式解决修改系统时间后Spring 定时任务不执行问题描述起因错误解决问题spring定时器定时任务到时间未执行 应用场...
    99+
    2022-11-12
  • @Scheduled 定时任务不执行
    一、排查代码中添加的定时任务步骤是否正确 启动类上加 @EnableScheduling 注解定时任务类上加@Component定时方法上加@Scheduled @Scheduled(cron = "0 19 16 * * ") ...
    99+
    2023-08-30
    java
  • Spring多定时任务@Scheduled执行阻塞问题解决
    目录一. 问题描述二. 场景复现三. 解决方案方案一:使用@Async注解实现异步任务方案二:手动设置定时任务的线程池大小四. 总结一. 问题描述 最近项目中发现一个问题,计划每日凌...
    99+
    2022-11-13
  • spring定时任务没有执行的原因有哪些
    1. 配置错误:可能是由于配置文件中的定时任务配置错误,导致定时任务无法正确识别和执行。2. 依赖错误:如果定时任务依赖的某个组件或...
    99+
    2023-08-24
    spring
  • android怎么定时执行任务
    在Android中,有几种方法可以定时执行任务。以下是其中的一些方法:1. 使用Handler和Runnable:可以通过Handl...
    99+
    2023-09-26
    android
  • java如何定时执行任务
    java如何定时执行一个方法java实现定时功能有多种方式,下面介绍3种:1、创建一个线程.import java.util.Date; public class ThreadTest { public static void ma...
    99+
    2022-04-07
    java基础 java 定时
  • Linux怎么定时执行任务
    在Linux中,可以使用cron来定时执行任务。Cron是一个用于定期运行命令或脚本的Unix工具。要创建一个定时任务,可以按照以下...
    99+
    2023-08-12
    Linux
  • 使用spring-task定时任务动态配置修改执行时间
    目录spring-task定时任务动态配置修改执行时间spring schedule 动态配置执行时间spring-task定时任务动态配置修改执行时间 因项目需要,几个定时任务需要...
    99+
    2022-11-12
  • 【运维】Linux定时任务 定时执行脚本
    【运维】Linux定时任务 定时执行脚本 在安装完成操作系统后,默认会安装 crond 服务工具,且 crond 服务默认就是自启动的。crond 进程每分钟会定期检查是否有要执行的任务,如果有,则会自动执行该任务。 五分钟执行一次sh...
    99+
    2023-08-31
    linux 运维 服务器
  • Tp5 通过crontab 执行定时任务
    声明:此处为ThInkCmf 为例: 在主题中的command 中新建php文件如图 在PHP文件中设置脚本名称及注释,并编写业务逻辑。 protected $output = '';...
    99+
    2023-10-18
    php crontab 定时任务 Powered by 金山文档
  • Crontab表达式执行定时任务
    Cron是一个Linux下的定时执行工具,可用于执行定时任务。 启动、关闭、查看Cron服务的语法: 启动:/sbin/service crond start 查看:/sbin/service cro...
    99+
    2023-09-12
    linux 服务器 运维
  • 如何使用spring-task定时任务动态配置修改执行时间
    小编给大家分享一下如何使用spring-task定时任务动态配置修改执行时间,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!spring-task定时任务动态配置修改执行时间因项目需要,几个定时任务需要人为动态设置执行时间,...
    99+
    2023-06-25
  • crontab定时任务不执行的原因
    1 crond服务未启动 crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止。如果停止了就无法执行任何定时任务了,解决的方法是打开它: crond或service crond start...
    99+
    2023-10-21
    服务器 linux centos
  • android定时执行任务怎么实现
    Android定时执行任务可以通过以下几种方式实现:1. 使用Handler和Timer:创建一个Handler对象,在Handle...
    99+
    2023-09-21
    android
  • ASP.NET MVC使用Quartz.NET执行定时任务
    本篇在ASP.NET MVC下实践使用Quartz.NET执行定时任务。 首先通过NuGet安装Quartz.NET。 使用Quartz.NET的大致思路是:1、实现IJob接口,定...
    99+
    2022-11-13
  • Linux如何定时执行任务教程
    目录1 教程1.1 安装crontabs1.2 查看crontab服务的状态:1.3 查看crontab的日志信息1.4 配置定时任务(1)修改定时任务:(2)查看定时任务1.5 crontab命令详解1.5.1 命令格...
    99+
    2023-04-23
    Linux定时任务教程 Linux定时任务 Linux任务
  • android定时执行任务怎么设置
    在Android中,可以使用AlarmManager类来设置定时执行的任务。下面是一个简单的示例:1. 首先,在AndroidMan...
    99+
    2023-08-18
    android
  • php怎么实现定时执行任务
    在PHP中,可以使用以下几种方法来实现定时执行任务:1. 使用cron表达式:cron表达式是一种常用的定时任务调度语法,可以在操作...
    99+
    2023-08-12
    php
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作