spring 定时任务

Spring 中的定时任务 文章目录定时任务原理 在 Spring 中使用定时任务非常容易,步骤如下: 第一步启动类加上 @EnableScheduling 注解。 package com.springboot.chapter13; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.sched 阅读详情

环境

最近项目(springmvc+jboss(tomcat)+db2)需要用到定时执行,java 定时任务


java.util.Timer

  1. Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少,这篇文章将不做详细介绍。

Quartz

  1. 使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂,兼容性比较好。(quartz-all-1.6.1.jar),

    需要继承 org.springframework.scheduling.quartz.QuartzJobBean类,配置触发器(SimpleTriggerBean或CronTriggerBean)每隔指定时间则触发一次

Spring-task

  1. Spring3.0以后自带的task :scheduledTask,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多。(spring-support.jar),必须spring3.0以后的版本。

总结

  1. 如果用spring的话,其自带的task比较好用。这些应用的配置,gogle百度一大把、这里贡献一个 scheduledTask的配置文件(清晰简单)
  2. <?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:ss="http://www.springframework.org/schema/security"
    	xmlns:jee="http://www.springframework.org/schema/jee" xmlns:aop="http://www.springframework.org/schema/aop"
    	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
    	xmlns:task="http://www.springframework.org/schema/task"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       	http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
       	http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd
       	http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd
       	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
       	http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
       	http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">
    
    
    	<!-- 注册相关后置处理器,扫描包路径下的注解配置 -->
    	<context:component-scan base-package="com.suning.ebuy.ott" />
    <span style="white-space:pre">	</span>...这里到<span style="font-family: Helvetica, Tahoma, Arial, sans-serif;">myJob1之间其实还有</span><span style="font-family: Helvetica, Tahoma, Arial, sans-serif;">很多bean,不好扫描所以在这里面配置了,这几个文件没有删除是想表达这个项目很庞大...</span>
    	<bean id="memberAccountMgmt"
    		class="com.suning.ebuy.ott.impl.service.esb.member.MemberAccountMgmt" />
    	<bean id="customerLevelMgmt"
    		class="com.suning.ebuy.ott.impl.service.esb.member.CustomerLevelMgmt" />
    
    
    	<bean id="userService" class="com.suning.ebuy.ott.impl.user.UserServiceImpl" />
    	<bean id="rscServerService" class="com.suning.ebuy.ott.impl.rscserver.RscServerServiceImpl" />
    	<bean id="act" class="com.suning.ebuy.ott.rscserver.ApplicationContextInit" />
    	<bean id="myJob" class="com.suning.ebuy.ott.impl.rscserver.MyJob">
    		<property name="msgType" value="abc_2" />
    	</bean>
    	<bean id="myJob1" class="com.suning.ebuy.ott.impl.rscserver.MyJob1">
    		<property name="msgType" value="abc_1" />
    	</bean>
    
    
    	<bean id="headPortraitService"
    		class="com.suning.ebuy.ott.impl.service.esb.member.HeadPortraitServiceImpl"></bean>
    	<bean id="goodsPriceService"
    		class="com.suning.ebuy.ott.impl.service.esb.tv3.GoodsPriceServiceImpl"></bean>
    	<bean id="chanColumnService"
    		class="com.suning.ebuy.ott.impl.service.esb.bigfavor.ChanColumnServiceImpl"></bean>
    	<bean id="chanGPService"
    		class="com.suning.ebuy.ott.impl.service.esb.bigfavor.ChanGPServiceImpl"></bean>
    	<bean id="gPActivityInfoService"
    		class="com.suning.ebuy.ott.impl.service.esb.bigfavor.GPActivityInfoServiceImpl"></bean>
    	<!-- 初始化logback配置文件 -->
    	<bean id="loggingInitialization"
    		class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    		<property name="targetClass"
    			value="com.suning.framework.log.util.LogbackConfigurer" />
    		<property name="targetMethod" value="initLogging" />
    		<property name="arguments">
    			<list>
    				<value>classpath:conf/log/main_${envName}_logging.xml</value>
    			</list>
    		</property>
    	</bean>
    
    
    	<!-- target service and auto run method -->
    	
    	<!-- 媒讯数据导入 -->
    	<bean id="mediaSpeedAutoTask" class="com.suning.ebuy.ott.task.SystemAutoTask" />
    
    	<bean id="searchDayStatTask" class="com.suning.ebuy.ott.reportTask.StatExecutor">
    		<property name="dmlSqlIds">
    			<map>
    			    <entry key="delete"><value>shotStatSearchDay.delete</value></entry>
    			    <entry key="insert"><value>shotStatSearchDay.insert</value></entry>
    			    <entry key="update"><value>shotStatSearchDay.update</value></entry>
    			</map>
    		</property>
    		<property name="statSqlIds">
    			<list>			
    			    <value>shotStatSearchDay.stat</value>
    			</list>			
    		</property>
    	</bean>
    	
    	<bean id="searchStatTask" class="com.suning.ebuy.ott.reportTask.StatExecutor">
    		<property name="dmlSqlIds">
    			<map>
    			    <entry key="delete"><value>shotStatSearch.delete</value></entry>
    			    <entry key="insert"><value>shotStatSearch.insert</value></entry>
    			    <entry key="update"><value>shotStatSearch.update</value></entry>
    			</map>
    		</property>
    		<property name="statSqlIds">
    			<list>			
    			    <value>shotStatSearch.stat</value>
    			</list>			
    		</property>
    	</bean>
    	
    	<bean id="channelStatTask" class="com.suning.ebuy.ott.reportTask.StatExecutor">
    		<property name="dmlSqlIds">
    			<map>
    			    <entry key="delete"><value>channelStat.delete</value></entry>
    			    <entry key="insert"><value>channelStat.insert</value></entry>
    			    <entry key="update"><value>channelStat.update</value></entry>
    			</map>
    		</property>
    		<property name="statSqlIds">
    			<list>			
    			    <value>channelStat.stat1</value>
    			    <value>channelStat.stat2</value>
    			    <value>channelStat.stat3</value>
    			    <value>channelStat.stat4</value>
    			    <value>channelStat.stat5</value>
    			</list>			
    		</property>
    	</bean>
    	...为了节省空间,其它task删除...
    	<bean id="cpaStatTask" class="com.suning.ebuy.ott.reportTask.StatExecutor">
    		<property name="dmlSqlIds">
    			<map>
    			    <entry key="delete"><value>statCpa.delete</value></entry>
    			    <entry key="insert"><value>statCpa.insert</value></entry>
    			    <entry key="update"><value>statCpa.update</value></entry>
    			</map>
    		</property>
    		<property name="statSqlIds">
    			<list>			
    			    <value>statCpa.stat1</value>
    			    <value>statCpa.stat2</value>
    			    <value>statCpa.stat3</value>
    			</list>			
    		</property>
    	</bean>
    	
    	<bean id="flowDayStatTask" class="com.suning.ebuy.ott.reportTask.StatExecutor">
    		<property name="dmlSqlIds">
    			<map>
    			    <entry key="delete"><value>flowStat.delete</value></entry>
    			    <entry key="insert"><value>flowStat.insert</value></entry>
    			    <entry key="update"><value>flowStat.update</value></entry>
    			</map>
    		</property>
    		<property name="statSqlIds">
    			<list>			
    			    <value>flowStat.stat1</value>
    			    <value>flowStat.stat2</value>
    			    <value>flowStat.stat3</value>
    			    <value>flowStat.stat4</value>
    			    <value>flowStat.stat5</value>
    			    <value>flowStat.stat6</value>
    			    <value>flowStat.stat7</value>
    			</list>			
    		</property>
    	</bean>
    	
    	<task:scheduled-tasks scheduler="myScheduler">
    		<!-- 每天早上9点运行 -->
    		<task:scheduled ref="searchDayStatTask" method="stat" cron="0 0 9 * * ?" />
    		<task:scheduled ref="searchStatTask" method="stat" cron="0 0 9 * * ?" />
    		<task:scheduled ref="channelStatTask" method="stat" cron="0 0 9 * * ?" />
    		<task:scheduled ref="cpaStatTask" method="stat" cron="0 0 9 * * ?" />
    		<task:scheduled ref="flowDayStatTask" method="stat" cron="0 0 9 * * ?" />
    		<task:scheduled ref="flowHourStatTask" method="stat" cron="0 0 9 * * ?" />
    		<task:scheduled ref="pageClickStatTask" method="stat" cron="0 0 9 * * ?" />
    		
    		<!-- 2:00点到18:点每隔半小时 -->
    		<task:scheduled ref="mediaSpeedAutoTask" method="doTask" cron="0 0/30 2-18 * * ?" />
    		
    	</task:scheduled-tasks>
    	
    	<task:scheduler id="myScheduler" pool-size="10"/>
    
    
    </beans>
    http://gong1208.iteye.com/blog/1773177 (参考)
Spring Boot 实现定时任务 阅读详情

相关推荐

【Spring学习】spring提供的三种定时任务

在spring中我们有三种不同的定时任务:基于Quartz的定时机制、基于Timer的定时机制、基于Executor的定时机制。 1、基于Quartz的定时任务机制 下面详细解释这个类图中涉及的关键类及其使用场景 1.1. SchedulerFactoryBean 这是Spring中基于Quartz的定时机制入口,只要Spring容器装载了这个类,Quartz定时机制就会启动,并加载定...

lmb55的专栏 1705

Springboot+resteasy定时任务

Springboot+resteasy定时任务 定时任务   需求:按每日统计点赞数、评论数、热度的增加量(不是现有量) 1.每天零点执行:首先遍历出user的统计字段 然后插入到新创建的表中。 2.每天一点执行:根据时间段将两表的数据相减创建增量字段,更新记录下来 package com.xgt.task; im...

Jinyao的博客 183

双通道中频信号数字下变频及相位差估计(FPGA)

双通道中频信号数字下变频及相位差估计实验 一、上框图(通俗易懂) 二、实验要求 1、 用点频信号模拟中频信号:中频信号由DDS1和DDS2产生。具体产生方法见第2点。 2、 DDS1和 DDS2:调用IPcore里的数字信号处理中的NCO模块,工作时钟为100MHz,数据率即为100MHz,DDS1和DDS2的频率为:(学号后三位+500)Khz+f0(可设为20MHz);输出为16位;DDS1...

qq_39809425的博客 6941

Java 实现分布式任务调度系统

随着微服务和分布式架构的普及,很多系统需要管理大量的定时任务。为了满足高效、可靠的任务调度需求,我们将实现一个简易的分布式任务调度系统。该系统可以在多个节点上调度任务,确保任务的高可用性,防止任务重复执行。

安 1234

玩转ubuntu18 --机器视觉方面(yolo算法识别及摄像头和cmake问题解决)

玩转ubuntu18 --机器视觉方面(yolo v3算法识别) 1.YOLO的简介 工作原理 先前的检测系统重新调整分类器或本地化器以执行检测。他们将模型应用于多个位置和比例尺的图像。图像的高分区域被视为检测。 我们使用完全不同的方法。我们将单个神经网络应用于整个图像。该网络将图像划分为区域,并预测每个区域的边界框和概率。这些边界框按预测概率加权。 我们的模型比基于分类器的系统具有几个优势。它在测试时间查看整个图像,因此其预测由图像中的全球上下文提供信息。它还通过单一网络评估进行预测,这与R-CNN等系统

qq_53951823的博客 1556

衡山派Luban-Lite系统SDIO无线网络配置实战:以D133CBV-QFN88开发板与RTL8189模组为例

本文详细介绍了在衡山派D133CBV-QFN88开发板上,为Luban-Lite系统配置SDIO无线网络的完整实战流程。通过配置SDMC接口、RTL8189 Wi-Fi驱动、lwIP协议栈及内核参数,并解决编译分区问题,最终实现Wi-Fi网络连接与测试,为嵌入式设备联网提供清晰指导。

weixin_35677363的博客 266

TaskUtil多线程与定时任务

packagecom.taoban.util;/***执行单次任务或定时任务工具类(用于减少newThread()和newTimer()的使用)*/publicclassTaskUtil{privatestaticLoglog=LogFactory.getLog(TaskUtil.class);privatestaticExecutorSe...

weixin_30596023的博客 200

【SABRE 3D, SABRE 3DxT,LAM设备】2025年9月13日-安全配置-准备工作

请遵循本规程将SABRE 3D/3DxT/3D Scimitar系统设置为安全配置,以便能够在电镀单元、APT模块、XMM(或SRD)模块、工厂接口(FI)外壳或中央通道内部及周边区域执行作业p104-p117。在生产过程中暂停调度程序存在一定风险:若待维护模块未离线且在其他模块完成处理前重启调度程序,可能对生产晶圆造成影响。维护人员需特别注意电镀模块内的晶圆状态,并尽可能快速地恢复调度程序。确认待维护模块内无晶圆滞留暂停调度程序并将相应模块设置为离线状态打开模块检修门并关闭安全盖板(槽位)

weixin_46735260的博客 1363

logback日志文件

Logback是由log4j创始人Ceki Gülcü设计的又一个开源日志组件。   logback.xml   &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!-- Reference Manual http://logback.qos.ch/manual/index.html --&gt; &lt;configuration&...

170

操作系统 | 知识梳理 | 复习(上)

操作系统复习

知识库搭建ing 3474

基于半经验模型的熔断器燃弧过程计算与分析

本文针对1200V/1250A熔断器建立电弧燃烧半经验模型,通过ANSYS计算弧前时间,结合熔体烧蚀、石英砂烧蚀等物理过程简化建模。模型引入电导率随温度变化函数,利用Matlab拟合实验数据确定参数。分析表明:熔体宽度和节距增加会提高弧压峰值并缩短过零时间;总长固定时,断口数和节距影响较小。弧压峰值需控制在额定电压3倍内,过零时间需满足安全裕度。通过Python代码复现了电弧电导率模型、能量平衡方程及弧压计算,验证了熔体结构尺寸对电弧特性的影响规律。

huanghm88的专栏 258

Spring定时任务传参问题 <property name="arguments"

<bean id="mayAckRedeemGiftJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="mayAckRedeemGiftJob"/> <!-- <...

weixin_33736048的博客 856

【ComfyUI】【Nunchaku】【diffusers报错解决】秋叶整合包安装 Nunchaku 报错的解决方法

最近在折腾 AI 绘图时,我尝试在秋叶的 ComfyUI 整合包中安装 `ComfyUI-nunchaku` 插件(版本 0.3.3),结果启动后直接报错,提示无法从 `accelerate.utils.memory` 中导入 `clear_device_cache`,让我一度怀疑插件是否兼容。查阅了一堆 issue 和源码之后,总算找到了原因和解决方法。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1852

Spring Boot实现定时任务

定时任务是指在预定的时间点或按照特定的时间间隔自动执行的任务。操作系统维护:例如,定期清理临时文件、更新系统补丁等。数据备份:定期对重要数据进行备份,以防数据丢失。自动化测试:例如,在每天凌晨自动运行软件测试脚本。网站维护:比如定时发布新内容、定时发送邮件提醒等。数据分析:例如,定期汇总和分析业务数据,生成报告。

这河里吗l的博客 5447

Android SELinux——neverallow问题处理(十六)

遇到 neverallow 规则问题,千万别急着去注释/剔除里面原有的规则(原生的尽量别动)。增加 allow 规则是常见的解决办法,但是随着 android 版本的升级,系统对 SELinux 的管控越来越严,增加了大量的 neverallow。一般情况下,向默认标签授予权限的做法是错误的,其中许多权限都是 neverallow 规则所不允许的。按照上面方法去添加 SELinux 可能会违反了 neverallow 规则,编译时候会报 neverallow 相关的错误。

小旭的专栏 2666

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

spring schedule定时任务详解

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

我亦是行人的博客 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

定时任务—Spring定时任务

Spring 为我们提供了异步执行任务调度的方式,提供了 TaskExecutor、TaskScheduler接口,还有两个注解 @EnableScheduling、@Scheduled。

Eris_QwQ的博客 1250

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Spring 定时任务

本文参考自Spring官方文档 34. Task Execution and Scheduling。在程序中常常有定时任务的需求,例如每隔一周生成一次报表、每个月月末清空用户积分等等。Spring也提供了相应的支持,我们可以非常方便的按时执行任务。项目准备这里我使用Gradle来建立项目,然后在build.gradle中添加下面一行。springVersion的值是目前最新的Spring版本'4.3

乐百川 1682

【定时任务】——Spring定时任务Scheduled

定时任务在日常开发过程中非常常见,而且在日常的项目开发中也有多种实现方式,而且做任务调度的框架有很多种,小编最近的感受,如果想真正使用好任务调度还是存在困难的,所以分步学习,逐个击破!在这篇文章小编主要写spring中Scheduled。 spring定时任务设置有两种方式,注解和xml配置。推荐使用注解,在本文章也主要介绍注解方式配置。 注解方式配置定时任务 下面的步骤默认s...

漫漫长途,终有回转;余味苦涩,终有回甘 681

spring里面的定时任务的理解

在用spring自带的定时任务编写业务代码时,只需要在类上面加上@Scheduled注解并配上cron表达式即可完成一个定时任务的开发,那么这个注解的背后原理是什么样的呢? 其实spring并没有自创什么定时任务处理器,它也是用的java提供的ScheduledThreadPoolExecutor这个类实现的定时任务,所以搞清楚这个类的实现原理,也就明白了spring的定时任务的实现原理 首先看一下ScheduledThreadPoolExecutor的继承关系 可以看到这个类本身就是一个Thre

xiaxiaoying的专栏 746

Spring定时任务 Scheduled使用

在项目开发中,我们通常需要使用定时任务进行在一定的时间内进行任务的触发。@Scheduled 是 Spring 实现本地定时任务的核心注解,标记方法为定时任务,支持 cron、固定频率、固定延迟三种时间规则;启动类加 @EnableScheduling,方法需是无参、void、Spring Bean;cron 适合复杂时间规则,zone 解决时区问题,自定义线程池避免任务阻塞;默认单线程、不支持分布式,需针对性优化。

拽着尾巴的鱼儿的博客 1398

Spring中的定时任务

下面我们来看一下Spring中提供的定时任务开发: 在Spring中开发定时任务,分为3个步骤。 1 创建定时任务 2 注册定时任务 3 启动定时任务 分别来看一下 1 创建定时任务: package org.jnotnull; import java.util.TimerTask; public class MyTesk extends TimerTask...

zhukang0725的博客 204

boot定时任务开启和关闭 spring_Spring Boot详解(3)定时任务

Spring Boot详解(3)定时任务​mp.weixin.qq.com定时任务:我们在项目中,会使用定时任务去执行一些业务上或者是项目数据的备份和更新的操作,那么我们在微服务架构中怎么使用定时任务呢?又有多少种定时任务的实现方式呢?而定时任务的原理又是什么呢? 1. Timer 和 ScheduledExecutorServiceTimer是jdk中提供的一个定时器工具,使用的时候会在主...

weixin_36410316的博客 3760

spring4的定时任务

1、加入必须的jar包 spring-context-support-4.2.5.RELEASE.jar 2、配置spring.xml文件,加入以下内容 <bean id="testHandlerJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDeta

xieweikun7的博客 1246

spring的定时任务

一、前言 今天实现了一个要按每天凌晨4点自动拉取数据库数据到文件的需求用到了spring的定时任务,有些不记得了,重新查询资料复习了一下,记录下。 二、关于spring的定时任务---注解方式 spring的定时任务已经封装的很简单了,一种使用注解的方法简单配置一下就可以实现。这里有用到@EnableSchedulding用来表示开启定时任务放在要实现定时业务代码的类上,其次定时任务有三种方式实现 在要实现业务代码的方法上使用@Scheduled,主要用到的参数...

qq_41365804的博客 586
上一篇: spring 中controller间跳转传值
下一篇: js 日期格式化
_hug
博客等级 码龄17年 24粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值