spring 定时任务(一)

一、前期准备

 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 * * ?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值