atititt.java定时任务框架选型Spring Quartz 注解总结
atititt.java定时任务框架选型Spring Quartz 总结
1. 。Spring Quartz (ati recomm) 1
2.2. 增加xsi:schemaLocation valide 2
2.3. 我们的task任务扫描注解in spr.xml 2
6. 2) ServletContextListener 4
7. org.springframework.scheduling.timer.ScheduledTimerTask 5
1. 。Spring Quartz (ati recomm)
· Spring的scheduling。 quartz包中对Quartz的框架进行封装,使得开发时不用写任何Quartz和Spring的代码就可以实现定时任务。Spring通过 JobDetailBean,MethodInvokingJobDetailFactoryBean实现Job的定义,后者更加使用,只需指定要运行的 类,和该类中运行的方法即可,Spring将自动生成符合Quartz要求的JobDetail。例如:
· .web.xml :
· 加入
· <listener>
· <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
· </listener>
Spring3中加强了注解的使用,其中计划任务也得到了增强,现在创建一个计划任务只需要两步就完成了:
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
2.
3. Spring Quartz具体配置
3.1. 增加context,task命名空间xml:
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
3.2. 增加xsi:schemaLocation valide
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd
3.3. 我们的task任务扫描注解in spr.xml
<!-- o723 ati task add -->
<task:annotation-driven/>
<context:annotation-config/>
<context:component-scan base-package="com.attilax.time.**"/>
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
<!-- iha ssh recomm
<task:executor id="executor" pool-size="5" />
<task:scheduler id="scheduler" pool-size="10" />
<task:annotation-driven executor="executor" scheduler="scheduler" />
-->
</beans>
3.4. 设置运行方法
*/@Component
public class sysncTimeX {
public static Logger logger = Logger.getLogger("AtiTimerSyncer");
@Scheduled(cron="0 0 8 * * ?")
private static void sync() {
Date date =DateUtil. getDateFrmNet();
dateTimeX. setSystime(date);
logger.info("--o7k1 sync time:ok");
}
///@Scheduled(fixedDelay=2000)//每2秒执行一次
3.5. 设置输出日志
#----------ati o7k..
log4j.logger.AtiTimerSyncer= info,AtiTimerSyncerAppender
log4j.appender.AtiTimerSyncerAppender = org.apache.log4j.DailyRollingFileAppender
log4j.appender.AtiTimerSyncerAppender.Encoding=UTF-8
log4j.appender.AtiTimerSyncerAppender.File=logs/AtiTimerSyncer.log
log4j.appender.AtiTimerSyncerAppender.MaxFileSize= 20MB
log4j.appender.AtiTimerSyncerAppender.Threshold=debug
log4j.appender.AtiTimerSyncerAppender.ImmediateFlush=true
log4j.appender.AtiTimerSyncerAppender.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.AtiTimerSyncerAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.AtiTimerSyncerAppender.layout.ConversionPattern=%-4r %-5p [%d{yyyy-MM-dd HH:mm:ss}] %m %p [thrd:%t] loger:%c (%C.%M.%L) %n
#-----------------
4. 运行测试sprX走ok兰.
public static void main(String[] args) {
// attilax 老哇的爪子 ml38 o7k
// sync();
System.out.println(SpringUtil.getBean("sysncTimeX"));
}
5. Quartz Scheduler,定时任务
Quartz是一个作业调度系统(a job scheduling system),负责在约定的时间到达时执行(或通知)其他软件控制。是一个Java的定时任务框架,使用它可以方便的实现计划任务,即在某个时间或每隔 一定时间运行一个任务。Quartz的核心是Job/JobDetail,Trigger和Scheduler。
6. java.util.Timer
1)
这个方法应该是最常用的,不过这个方法需要手工启动你的任务:
如果要执行一些简单的定时器任务,无须做复杂的控制,也无须保存状态,那么可以考虑使用JDK 入门级的定期器Timer来执行重复任务。
2)
7. 2) ServletContextListener
这个方法在web容器环境比较方便,这样,在web server启动后就可以
自动运行该任务,不需要手工操作。
8. org.springframework.scheduling.timer.ScheduledTimerTask
3)
如果你用spring,那么你不需要写Timer类了,在schedulingContext-timer
.xml中加入下面的内容就可以了:
9. problem
Exception in thread "main" org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 115 in XML document from file [D:\workspace\vodx\WebRoot\WEB-INF\classes\applicationContext-common.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'task:annotation-driven'.
10. Cron表达式
被用来配置CronTrigger实例。 Cron表达式是一个由 7个子表达式组成的字
符串。每个子表达式都描述了一个单独的日程细节。这些子表达式用空格分隔,分别表示:
1. Seconds 秒
2. Minutes 分钟
3. Hours 小时
4. Day-of-Month 月中的天
5. Month 月
6. Day-of-Week 周中的天
7. Year (optional field) 年(可选的域)
剩下的就是corn表达式了、具体使用以及参数请百度google、
【秒】 【分】 【时】 【日】 【月】 【周】 【年】
下面只例出几个式子
CRON表达式 含义
"0 0 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分每分钟一次触发
"0 0/5 14 * * ?" 每天从下午2点开始到2:55分结束每5分钟一次触发
"0 0/5 14,18 * * ?" 每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发
"0 0-5 14 * * ?" 每天14:00至14:05每分钟一次触发
"0 10,44 14 ? 3 WED" 三月的每周三的14:10和14:44触发
"0 15 10 ? * MON-FRI" 每个周一、周二、周三、周四、周五的10:15触发
11. 参考
JAVA定时执行任务的三种方法 - gembin - BlogJava.htm
Quartz使用-入门使用(java定时任务实现) - lotusyangjun的专栏 - 博客频道 - CSDN.NET.htm
java定时任务管理 - 塵风的blog - ITeye技术网站.htm
quartz 框架定时任务,使用spring @Scheduled注解执行定时任务 - 萧若寒 - 博客频道 - CSDN.NET.htm
quartz 框架定时任务,使用spring @Scheduled注解执行定时任务 - 萧若寒 - 博客频道 - CSDN.NET.htm
atititt.java定时任务框架选型Spring Quartz 注解总结的更多相关文章
- java框架之Spring(2)-注解配置IOC&AOP配置
注解配置IoC 准备 1.要使用注解方式配置 IoC,除了之前引入的基础 jar 包,还需要引入 spring-aop 支持包,如下: 2.在 applicationContext.xml 中引入 c ...
- Java后端框架之Spring Boot详解,文末有Java分布式实战项目视频可取
在 Java 后端框架繁荣的今天,Spring 框架无疑是最最火热,也是必不可少的开源框架,更是稳坐 Java 后端框架的龙头老大. 用过 Spring 框架的都知道 Spring 能流行是因为它的两 ...
- quartz 框架定时任务,使用spring @Scheduled注解执行定时任务
配置quartz 在spring中需要三个jar包: quartz-1.6.5.jar.commons-collections-3.2.jar.commons-logging-1.1.jar 首先要配 ...
- java框架之Spring(5)-注解驱动开发
准备 1.使用 maven 创建一个 java 项目,依赖如下: <dependency> <groupId>org.springframework</groupId&g ...
- java定时任务框架Quartz入门与Demo搭建
- 在Listener(监听器)定时启动的TimerTask(定时任务)中使用Spring@Service注解的bean
1.有时候在项目中需要定时启动某个任务,对于这个需求,基于JavaEE规范,我们可以使用Listener与TimerTask来实现,代码如下: public class TestTaskListene ...
- 解决Spring+Quartz无法自动注入bean问题
问题 我们有时需要执行一些定时任务(如数据批处理),比较常用的技术框架有Spring + Quartz中.无奈此方式有个问题:Spring Bean无法自动注入. 环境:Spring3.2.2 + Q ...
- Spring框架中的Quartz定时任务使用笔记(通过@Scheduled注解的方式实现)
1.修改spring的xml配置信息 applicationContext.xml 三个部分内容 1.xmlns添加:xmlns:task="http://www.springframewo ...
- 基于spring+quartz的分布式定时任务框架
问题背景 我公司是一个快速发展的创业公司,目前有200人,主要业务是旅游和酒店相关的,应用迭代更新周期比较快,因此,开发人员花费了更多的时间去更=跟上迭代的步伐,而缺乏了对整个系统的把控 没有集群之前 ...
随机推荐
- C++和C#混合编程
最近需要利用C++和C#混合编程,然后就写了一个C#调用C++生成的DLL的DEMO.困扰我好久的就是C#中string类型在C++里面怎么表达,现在把C++生成DLL供C#调用的流程写出来. 源码: ...
- Selenium2+python自动化11-定位一组元素find_elements
前言 前面的几篇都是讲如何定位一个元素,有时候一个页面上有多个对象需要操作,如果一个个去定位的话,比较繁琐,这时候就可以定位一组对象. webdriver 提供了定位一组元素的方法,跟前面八种定位方式 ...
- PHP 使用reflection时的问题,以及解决方案
错误:PHP Fatal error: Using $this when not in object context 代码如下: <?php class someClass { private ...
- RGBA 与opacity
RGBA是一种表示颜色的方式,初次看到觉得很奇怪,与RGB的区别是什么?后面查了下,才发现RGBA的好处. RGBA各个字母的含义为: R:红色值,正整数 | 百分数: G:绿色值,正整数 | 百分数 ...
- css3新属性@ text-shadow
text-shodow是css3的新属性,可以利用这个属性使字体更有立体感,还可以创造有趣的效果. 1.语法形式:text-shadow : x-offset(x轴偏移量) y-offset(y轴偏移 ...
- [转]初探 PhoneGap 框架在 Android 上的表现
原文地址:http://topmanopensource.iteye.com/blog/1486929 phonegap是由温哥华的一家小公司研发的多平台的移动开发框架,支持流行的大多数移动设备(iP ...
- 多媒体技术基础之---Come on!来点儿音乐吧
其实要说在Linux系统下播放音乐,确实是一件让人非常抓狂的事情,抛开各种音频格式的商业授权不说,即使提供给你相应的解码库,能玩儿得转的人那又是少之又少.可能有些盆友说ubuntu这方面确实做得不错, ...
- 学习Linux所需软件
一: VMware虚拟机 二:VMware_Install_Cleaner 虚拟机卸载 三:XShall
- c#开发Mongo笔记第七篇
开发到这里遇到了一些问题,哪到这里想请教一下大家 今天我完成的是菜单功能, public class Menu { public ObjectId _id { get; set; } public i ...
- secure erase 时必须umount
不umont就进行secure erase,仍然会执行成功,但是ssd确没有被清0,使用hexdump可以验证. 但是secure erase 命令却返回成功,造成误解以为已经擦除成功. 所以,sec ...