在实际工作中,经常需要使用到定时任务,很多地方都会需要这种功能,比如做数据备份、同步等操作。

今天终于抽出时间总结了一下,写一个小例子;

基本使用:

spring的定时任务使用起来十分方便,只需要两步:1、写好执行定时任务的类和方法;2、配置spring定时任务配置文件:

spring定时器完整实例:

1.工程结构:

2.需要定时执行的代码块:

package com.Task;

public class TaskDemo {
private static int sf = 0;
public void testTask(){
sf++;
System.out.println("10秒输出一次。。。。。sf:"+sf);
}
}

 3.定时器配置文件:spring-task.xml

<?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:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!-- 定时器列表 -->
<property name="triggers">
<list>
<ref local="TaskDemo" /> </list>
</property>
</bean> <!-- 设置时间 -->
<bean id="TaskDemo" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="TaskDemoDetail" />
</property>
<property name="cronExpression">
<value>0/10 * * * * ?</value>
</property>
</bean>
    <!-- 设置需要执行的代码块 -->
<bean id="TaskDemoDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<bean class="com.Task.TaskDemo"/>
</property>
<property name="targetMethod">
<value>testTask</value>
</property>
</bean>
</beans>

 4.web.xml配置spring-task.xml使其生效:

 <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:conf/spring-task.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>

5.需要的jar包:http://pan.baidu.com/s/1bpacgKf

6.部署到tomcat即可执行定时任务;

so easy 有木有。。。。。。

说明:关于定时任务时间设置方面,网上很多设置详解:

字段 允许值 允许的特殊字符 
秒 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 *

 

最新文章

  1. 记录一次bug解决过程:resultType和手动开启事务
  2. Docker configure http proxy
  3. 编译boost
  4. 使用maven创建web项目
  5. 让Delphi的DataSnap发挥最大效率
  6. ClamAV
  7. android 上手维修设备和推断启动服务
  8. hdu1044
  9. 【同一直线最多点】 poj 1118+2606+2780
  10. memcache command
  11. H5上传图片并使用canvas制作海报
  12. Mesos源码分析(1): Mesos的启动过程总论
  13. Qt自定义控件系列(一) --- 圆形进度条
  14. 20175213 2018-2019-2 《Java程序设计》第7周学习总结
  15. 以太坊ERC20代币合约案例
  16. 超炫jQuery测试答题功能
  17. Forward团队-爬虫豆瓣top250项目-模块测试过程
  18. 转:Redis和Memcache的区别分析
  19. 【剑指offer】不使用新变量,交换两个变量的值,C++实现
  20. Handlebars.js,Json+ajax+拼html

热门文章

  1. Android跨进程通信Content Provider
  2. 微pe安装原版win10怎么装|wepe安装原版win10 1803教程
  3. 错误代码 2003不能连接到MySQL服务器在*.*.*.*(10061)
  4. [GPU] Install H2O.ai
  5. Java NIO学习笔记九 NIO与IO对比
  6. MVC自定义视图
  7. Ansible-galera
  8. SQL Server 中 ROWLOCK 行级锁
  9. python-Web-数据库-mysql
  10. 安装heat