spring 定时任务(一)

本文介绍如何使用Spring和Quartz实现定时任务。包括所需jar包、业务类编写、配置文件详解及实例演示。通过Cron表达式设定不同执行频率。

一、前期准备

 spring.jar,quartz.jar,commons-logging-1.0.4.jar

 

二、具体步骤

1、 编写业务类,该类继承了org.quartz.Job,主要的逻辑在execute方法中编写

2、配置spring的applicationContext-timetask.xml文件
    2.1配置任务JobDetailBean
    2.2配置触发器CronTriggerBean

   2.3配置调度器  SchedulerFactoryBean

 

三、实例
1、web.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>
 
  <!-- 设置Spring容器加载配置文件路径-->
 <context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>classpath:applicationContext-*.xml</param-value>
 </context-param>
 
 <!-- 加载Spring容器配置-->
 <listener>
 <listener-class>
  org.springframework.web.context.ContextLoaderListener
 </listener-class>
 </listener>
</web-app>

 

2、TimeTask.java、TimeTask2.java
public class TimeTask implements org.quartz.Job{
 public voidperform(){  
       //业务逻辑 
     System.out.println("定时任务1开始执行----现在的时间是--"+newDate());         
    }
 @Override
 public void execute(JobExecutionContext arg0)throws JobExecutionException {
  // TODO Auto-generated method stub
  perform();
 }
}

public class TimeTask2 implements org.quartz.Job{
 public voidperform(){  
       //业务逻辑 
     System.out.println("定时任务2开始执行----现在的时间是--"+newDate()); 
    }
 @Override
 public void execute(JobExecutionContext arg0)throws JobExecutionException {
  // TODO Auto-generated method stub
  perform();
 }
}

 

3、applicationContext-timetask.xml
<?xml version="1.0"encoding="UTF-8"?> 
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN""http://www.springframework.org/dtd/spring-beans.dtd"> 
<!--   
   <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"":/spring-beans.dtd"> 
--> 
<beans> 
   <bean name="task1" 
       class="org.springframework.scheduling.quartz.JobDetailBean"> 
       <property name="jobClass"value="com.base.timetask.TimeTask"/>         
   </bean>
   <bean name="task2" 
       class="org.springframework.scheduling.quartz.JobDetailBean"> 
       <property name="jobClass"value="com.base.timetask.TimeTask2"/>         
   </bean>   
   <!-- 触发器 --> 
   <bean id="cronTrigger1" 
       class="org.springframework.scheduling.quartz.CronTriggerBean">  
       <!-- 指向我们的任务--> 
       <property name="jobDetail" ref="task1"/>   
       <!--每隔1分钟执行一次--> 
       <property name="cronExpression" value="0 */1 * * *?" /> 
   </bean>     
    <bean id="cronTrigger2" 
       class="org.springframework.scheduling.quartz.CronTriggerBean">   
       <!-- 指向我们的任务--> 
       <property name="jobDetail" ref="task2"/> 
       <!--每周日23:59:59执行一次--> 
       <property name="cronExpression" value="59 59 23 ? *SUN" /> 
   </bean>    
   <!-- 调度器 --> 
   <bean 
       class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
       <propertyname="triggers"> 
           <list> 
               <!--  触发器列表--> 
               <ref bean="cronTrigger1"/> 
               <ref bean="cronTrigger2"/> 
           </list> 
       </property>      
   </bean>
</beans> 

说明:

        1)Cron表达式的格式:秒 分 时 日 月 周 年(可选)。

              字段名                允许的值                       允许的特殊字符 

              秒                    0-59                              , - * / 

              分                     0-59                              , - * / 

              小时                  0-23                              , - * / 

              日                     1-31                              , - * ? / L W C 

              月                     1-12orJAN-DEC                   , - * / 

              周几                   1-7orSUN-SAT                    , - * ? / L C # 

              年(可选字段)          empty,1970-2099                  -  * /

              “?”字符:表示不确定的值

              “,”字符:指定数个值

              “-”字符:指定一个值的范围

              “/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m

              “L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X

              “W”字符:指定离给定日期最近的工作日(周一到周五)

              “#”字符:表示该月第几个周X。6#3表示该月第3个周五

        2)Cron表达式范例:

                每隔5秒执行一次:*/5 * * * * ?

                每隔1分钟执行一次:0 */1 * * * ?

                每天23点执行一次:0 0 23 * * ?

                每天凌晨1点执行一次:0 0 1 * * ?

                每月1号凌晨1点执行一次:0 0 1 1 * ?

                每月最后一天23点执行一次:0 0 23 L * ?

                每周星期天凌晨1点实行一次:0 0 1 ? * L

                在26分、29分、33分执行一次:0 26,29,33 * * * ?

                每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

标题基于Python的自主学习系统后端设计与实现AI更换标题第1章引言介绍自主学习系统的研究背景、意义、现状以及本文的研究方法和创新点。1.1研究背景与意义阐述自主学习系统在教育技术领域的重要性和应用价值。1.2国内外研究现状分析国内外在自主学习系统后端技术方面的研究进展。1.3研究方法与创新点概述本文采用Python技术栈的设计方法和系统创新点。第2章相关理论与技术总结自主学习系统后端开发的相关理论和技术基础。2.1自主学习系统理论阐述自主学习系统的定义、特征和理论基础。2.2Python后端技术栈介绍DjangoFlask等Python后端框架及其适用场景。2.3数据库技术讨论关系型和非关系型数据库在系统中的应用方案。第3章系统设计与实现详细介绍自主学习系统后端的设计方案和实现过程。3.1系统架构设计提出基于微服务的系统架构设计方案。3.2核心模块设计详细说明用户管理、学习资源管理、进度跟踪等核心模块设计。3.3关键技术实现阐述个性化推荐算法、学习行为分析等关键技术的实现。第4章系统测试与评估对系统进行功能测试和性能评估。4.1测试环境与方法介绍测试环境配置和采用的测试方法。4.2功能测试结果展示各功能模块的测试结果和问题修复情况。4.3性能评估分析分析系统在高并发等场景下的性能表现。第5章结论与展望总结研究成果并提出未来改进方向。5.1研究结论概括系统设计的主要成果和技术创新。5.2未来展望指出系统局限性并提出后续优化方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值