Spring3 Shedule Task之注解实现 (两次启动Schedule Task 的解决方案)

在spring3 中的新引入的task 命名空间。可以部分取代 quartz 功能,配置和API更加简单,并且支持注解方式。但是如果需要使用比较复杂的任务调度。还是建议使用quartz。

 

 

第一步:

        在Spring的相关配置文件中(applicationContext.xml或者是{project_name}_servelt.xml或者是独立的配置文件如XXX_quartz.xml)中配置并开启Spring Schedule Task.注意其中高亮的部分是必须的。

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:task="http://www.springframework.org/schema/task"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
       http://www.springframework.org/schema/task
       http://www.springframework.org/schema/task/spring-task-3.0.xsd
       ">
    <mvc:annotation-driven />

    <context:component-scan base-package="com.mytools.validator.engine" />
   
    <!-- 启动定时器 -->
    <task:annotation-driven/>    
</beans>

 

第二步:

        可以在类中的需要定时执行的方法下指定如下Annotation

 @Scheduled(cron="0 33/3 * * * ?") //每小时的33分钟开始执行,每3分钟执行1次
    public void start() throws ServletException {
                 validate();
}

备注:其实@Scheduled中可以指定如下3中时间表达式:

(1)fixedRate:每隔多少毫秒执行一次该方法。如:


          @Scheduled(fixedRate=2000)  // 每隔2秒执行一次
          public void scheduleMethod(){  
                    System.out.println("Hello world...");  
          }  
     (2)fixedDelay:当一次方法执行完毕之后,延迟多少毫秒再执行该方法。

 

  (3)cron:详细配置了该方法在什么时候执行。cron值是一个cron表达式。如:


                @Scheduled(cron="0 0 0 * * SAT")  
                public voidarchiveOldSpittles() {  
                 // ...  
                }

 

 

到指定时间后,任务总是执行2次的解决方案:

这是因为我们很容易在一个基于Spring的Web工程中启动2个定时线程:

第一次:web容器启动的时候,读取applicationContext.xml(或者别的Spring核心配置文件)文件时,会加载一次。


第二次:Spring本身会加载applicationContext.xml(或者别的Spring核心配置文件)一次。

 

解决方案:将你的Task的相关配置独立出来并在web.xml中通过context-param加载。而不是通过spring加载。

1) 独立出Spring-Task,如新命名一个文件名叫cms_quartz.xml

2)    在web.xml中去加载该文件:

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/cms-servlet.xml,classpath:cms-quartz.xml</param-value>
    </context-param>

 

 

 

 

 

软件测试面试题之易错题 (1)白盒测试:又称功能功能 测试、数据驱动测试和行为测试,是一种从用户观点出发的测试,被测程序为黑盒子, 通过测试来检测每个功能是否能够正常使用。(2)黑盒测试:又称结构测试和逻辑驱动 测试,是知道产品内部工作过程,通过测试来检测产品内部动作是否按照规格说明书 的规定去正常运行。(1)、测试需求分析;(2)动态白盒测试:需要对各个模块功能、模块间的接口、局部数据结构、主要执行路径、 错误处理等方面的测试。(2) 集成测试所测试的对象是模块间的接口,其目的是在找出在模块接口上面,包括整体体系结构上的问题; 阅读详情

相关推荐

【CANoe16安装教程】亲测安装成功

CANoe16安装教程

qq_45302638的博客 2万+

Java,Spring定时器@Scheuled,后台定时轮询简易方法

说到轮询,大多数都使用websocket轮询,或亦是redis,rabbitMQ等,业务需求,今日想出一种简易的轮询方法, 记录一下,如有错误,大佬门轻喷。 需求假设: 页面显示今日天气状况,天气是实时改变的,所以每个一小时或者半小时更新。所以需要后台定时执行一次请求获取天气信息,来更新天气情况等等 直接上代码 //省略controller service代码 @Service public class WeatherServiceImpl implements WeatherService{ //先

weixin_42553616的博客 1243

用 Coze 打造纯自动化 AI 情报助手

本文将引导您逐步构建一个简易的AI情报助手,从提示词到工作流,再到卡片消息,详细讲解了如何利用Coze平台开发自动化工具。过程简单易懂,何不亲自动手一试?如果您对此类内容感兴趣,敬请关注本作者。未来,我将带来更多精彩的AI工具教程,助您迅速掌握各类AI应用。在这个AI时代,让您领先一步。t=O83A2AGI.NET AI 教程 震撼!用 Coze 打造纯自动化 AI 情报助手震撼!

xinzhaobuxuan的博客 2531

spring schedule定时任务详解

spring schedule 使用方式以及源码解析

我亦是行人的博客 1万+

别再只用串口助手了!用LabVIEW给STM32F103C8T6做个专属上位机(附完整源码)

本文详细介绍了如何利用LabVIEW为STM32F103C8T6开发定制化上位机,替代传统串口助手,实现高效数据交互。内容涵盖硬件架构设计、STM32固件优化、LabVIEW上位机开发技巧及工业级应用案例,特别适合需要实时数据采集与处理的工控场景。

weixin_42524762的博客 368

Zephyr RTOS线程间通讯实战:消息队列与信号量的5个经典应用场景

本文深入探讨了Zephyr RTOS中线程间通讯的核心机制,通过消息队列与信号量的组合,详细解析了传感器数据处理流水线、命令分发系统、日志记录、资源池管理以及周期性任务协同调度等5个经典应用场景。这些实战模式为构建高效、稳定且可维护的嵌入式多线程系统提供了清晰的设计蓝图和代码范例。

tomato的博客 94

5分钟搞懂如何在Spring Boot中Schedule Tasks

上篇文章我们讲解了 SpringBoot 整合 Quartz,本文演示了如何使用 SpringBoot 自带的实现定时任务的方式。 Spring Schedule 实现定时任务 我们只需要 SpringBoot 项目最基本的依赖即可,所以这里就不贴配置文件了。 1. 创建一个 scheduled task 我们使用@Scheduled注解就能很方便地创建一个定时任务,下面的代码中涵盖了...

spring_root的博客 804

SIMPLIS实战:从零构建理想BUCK电路,精准计算与POP稳态分析

本文详细介绍了如何使用SIMPLIS软件从零开始构建并仿真一个理想的BUCK降压电路。通过设定关键参数、计算理想器件值,并搭建仿真模型,文章重点演示了暂态仿真以观察电路上电过程,并深入讲解了高效的POP(周期性工作点)稳态分析技术,帮助工程师快速验证设计、评估稳态性能,从而加速电源设计迭代。

weixin_29165465的博客 393

Spring Task 定时任务 @Scheduled() 注解形式实现方案

spring task定时任务调度@Scheduled注解以及corn表达式说明详解

m0_69057918的博客 4659

在边缘部署实时视觉应用程序

克隆代码库后,压缩源文件夹的内容,并将生成的存档文件上传到上一节中创建的 S3 存储桶中。在本教程中,我们将使用 AWS Greengrass,因为它支持大多数 Windows 和 Linux 设备,包括我们的目标 Jetson AGX Xavier。此外,模型还可以量化到更低的精度,从而加快推理速度,但对于较大的模型,此过程通常较长(约 45 分钟)。本例中的脚本只是启动一个 Bash 环境,切换到解压后的构件目录,最后使用所需的命令行参数运行 Deepstream 应用。每个模型类型都有其独有的格式。

2501_91623519的博客 1284

通信原理 | 随机数仿真 | 均匀、正态、双高斯、瑞利、莱斯、对数正态、nakagami、Suzuki分布的随机数仿真(matlab)

信道建模在通信系统设计和分析中扮演着至关重要的角色。它指的是使用数学和物理模型来描述和模拟无线或有线通信路径中的信号传播特性。

若北辰 1985

Spring Shedule Task之注解实现 (两次启动Schedule Task 的解决方案)

  在spring 中的新引入的task命名空间。可以部分取代quartz 功能,配置和API更加简单,并且支持注解方式。    第一步: 在Spring的相关配置文件中(applicationContext.xml或者是{project_name}_servelt.xml或者是独立的配置文件如XXX_quartz.xml)中配置并开启Spring Schedule...

weixin_30505043的博客 174

电池管理系统(BMS)软件:CATL BMS二次开发_(1).CATL BMS软件概述

CATL BMS软件的保护机制是确保电池组安全和可靠运行的关键部分。通过高精度的传感器和智能算法,BMS可以实时监测电池组的状态,及时采取保护措施。二次开发中,可以根据特定的应用需求,增加新的传感器、优化算法、扩展通信接口等,进一步提高系统的性能和可靠性。维护和扩展则是确保系统长期稳定运行的重要手段。希望以上内容对您理解CATL BMS软件的保护机制有所帮助。如果您有任何进一步的问题或需要更详细的解释,欢迎随时提问。

zhubeibei168的博客 1457

@scheduled cron启动后和每小时执行_Spring中使用@Scheduled注解快速开发定时任务

项目开发中很多时候需要定时执行某项任务,这个时候就需要用到定时任务了,Spring3.1开始让计划任务变得非常简单,只需要几个注解就能快速开启计划任务的支持。首先开启定时任务使用@EnableScheduling注解然后需要配置定时任务执行类@Componentpublic class TestTask {private static final Logger logger = LoggerFac...

weixin_39679468的博客 5034

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Spring Boot中Schedule

在实际的业务开发过程中,我们经常会需要定时任务来帮助我们完成一些工作,例如每天早上 6 点生成销售报表、每晚 23 点清理脏数据等等。如果你当前使用的是 SpringBoot 来开发项目,那么完成这些任务会非常容易!SpringBoot 默认已经帮我们完成了相关定时任务组件的配置,我们只需要添加相应的注解@Scheduled就可以实现任务调度!虽然默认的情况下,@Scheduled任务都在 Spring 创建的大小为 1 的默认线程池中执行,但是我们也可以自定义线程池,只需要实现类即可!

xdpcxq的专栏 517

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

spring定时任务详解spring schedule和spring-quartz

从实现的技术上来分类,java定时任务目前主要有三种: Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行;而且作业类需要集成java.util.TimerTask,一般用的较少。 Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照...

赶路人儿 3万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SpringBoot Task定时任务Schedule及Schedule相关内容

SpringBoot在官方的说明已经阐述的很直接,最主要的作用就是为了微服务而存在,这里要讲一下,什么功能叫做微服务,微服务其实主要针对两种规则: 一种是直接请求的数据接口,就好像我们在页面通过ajax异步请求后台返回数据一样,这里后台返回数据的功能就可以称呼为数据接口,那么这种功能我们可以使用SpringBoot来处理(举例:获取天气预报、获取火车票信息、获取飞机票信息) 另一种是SpringBoot的拿手戏,就是定时任务,SpringBoot的定时任务处理起来很简单,非常容易上手,并且后期管理也相对容易

慕佳人的博客 3826

Spring 定时任务scheduled-tasks详解

1. Spring 定时任务scheduled-tasks简单介绍Spring内部有一个task是Spring自带的一个设定时间自动任务调度,提供了两种方式进行配置,一种是注解的方式,而另外一种就是XML配置方式了。注解方式比较简洁,XML配置方式相对而言有些繁琐,但是应用场景的不同,两者又各有优点,所以具体使用还是根据需求来划分。因为任务调度这样的需求,通常改动都是比较多的,如果用注解的方式改动

Jerry的一亩三分地 2万+

最简单的java定时任务@Scheduled注解以及定时任务开关

1.如何使用@Scheduled注解 2.如何设置定时任务开关

qq_43907515的博客 6920

Spring定时器设置详解释

这是时间的设置规则org.springframework.scheduling.quartz.CronTriggerBean允许你更精确地控制任务的运行时间,只需要设置其cronExpression属性。一个cronExpression表达式有至少6个(也可能是7个)由空格分隔的时间元素。从左至右,这些元素的定义如下:1.秒(0–59)2.分钟(0–59)3.小时(0–23)4.月份中的日期(1–

gbtyy的专栏 1803

Spring3 Schedule Task之注解实现 (两次起动Schedule Task 的解决方案)

Spring3 Schedule Task之注解实现 (两次起步Schedule Task 的解决方案) Spring3 Schedule Task之注解实现 (两次启动Schedule Task 的解决方案) 在spring3 中的新引入的task 命名空间。可以部分取代 quartz 功能,配置和API更加简单,并且支持注解方式。但是如果需要使用比较复杂的任务调度。还是建议使用quartz

w2222288的专栏 6352

spring mvc 任务定时器 @Scheduled

在github看到一遍博客讲述springMVC定时任务,实现如下: 1,在web工程lib中加入以下jar: com.springsource.org.aopalliance-1.0.0.jar commons-logging-1.2.jar spring-aop-4.1.6.RELEASE.jar spring-beans-4.1.6.RELEASE.jar spring-cont

平凡之路无尽路的博客 4254

Spring Schedule定时任务总结

定时任务 定时任务使用场景: 定时数据备份 订单超时自动取消 按时间段统计信息 定时发送短信或邮件 … … Spring定时任务框架 在Spring框架中实现定时任务的办法至少有两种(不包括Java原生的Timer及Executor实现方式),一种是集成第三方开源定时任务框架Quartz;另一种便是Spring自带的定时器(仅针对3.0之后的版本)。 Quartz:这是一个功能比较强大的的三方任务框架,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂。 Spring3.0以后自

qq_37924275的博客 902

spring schedule定时任务

spring schedule定时任务 (一)第一种方式的实现: 1、使用maven创建spring项目,schedule在spring-context.jar的包下边,因此需要导入与之相关的包;同时,我配的是spring web项目,也同时导入了spring-web和spring-webmvc的包,如下:                   org.springframework

wscrf的博客 620

Spring Boot 定时任务实现后台管理动态配置(动态添加修改删除定时任务)

(1)思路说明; (a)首先这里我们需要重新认识一个类ThreadPoolTaskScheduler:线程池任务调度类,能够开启线程池进行任务调度。 (b)ThreadPoolTaskScheduler.schedule()方法会创建一个定时计划ScheduledFuture,在这个方法需要添加两个参数,Runnable(线程接口类) 和CronTrigger(定时任务触发器)

weixin_39851884的博客 9277

Spring 定时任务task:scheduler

楔子 spring的定时任务的学习 测试task:scheduler 参数 spring定时任务 &lt;task:scheduled-tasks &gt; &lt;task:scheduled ref="demoQua" method="name" cron="1/1 * * * * ? " /&gt; &lt;task:sc...

zhuzi51的专栏 1732
上一篇: Spring3 中的Schedule Task以及Quartz中的Cron表达式
下一篇: Post表单提交TextArea的值出现转译乱码问题 - Spring MVC处理表单提交
iteye_4921
博客等级 码龄8年 25粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值