• spring配置文件定时器


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

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

    基本使用:

    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使其生效:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app version="2.5" 
     3     xmlns="http://java.sun.com/xml/ns/javaee" 
     4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     7   <display-name></display-name>    
     8   <welcome-file-list>
     9     <welcome-file>index.jsp</welcome-file>
    10   </welcome-file-list>
    11   
    12   <servlet>
    13     <servlet-name>dispatcherServlet</servlet-name>
    14     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    15     <init-param>
    16         <param-name>contextConfigLocation</param-name>
    17         <param-value>
    18                  classpath:conf/spring-task.xml
    19             </param-value>
    20     </init-param>
    21     <load-on-startup>1</load-on-startup>
    22 </servlet>
    23 </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 *

     

  • 相关阅读:
    微信小程序之自定义模态弹窗(带动画)实例
    微信小程序 tab切换内容及分页
    Django实现标签联动以及xadmin中实现标签联动
    小程序跨页面数据传递与事件响应
    django admin显示多对多字段ManyToManyField
    【pycharm】Unable to save settings: Failed to save settings. Please restart PyCharm解决
    django-xadmin自定义widget插件(自定义详情页字段的显示样式)
    django 做 migrate 时 表已存在的处理
    感悟|再谈数学知识的积累
    欣赏|最新技术显示的试卷
  • 原文地址:https://www.cnblogs.com/chafe/p/6118353.html
Copyright © 2020-2023  润新知