spring 定时任务

1.定时任务实现方式有很多,java自带的定时器可以,但是不好用,基本不用。如果需求较为简单,可以考虑 Spring Task。如果更为负责,则可以考虑重量级的框架quartz。今天重点介绍quartz,quartz和 Spring 的集成方式有多种,有RAM 和 JDBC 方式。RAM方式可以理解为静态的方式,任务和触发方式均可配置式,JDBC方式可实现任务动态添加,启动,暂停,更加灵活,但是实现稍微复杂。接下来我们介绍一种RAM方式的实现方式。

2.jar 包

<dependency>
      <groupId>org.quartz-scheduler</groupId>
      <artifactId>quartz</artifactId>
      <version>2.2.1</version>
</dependency>

<spring.version>4.2.6.RELEASE</spring.version>

注意版本,不然会报JobDetailImpl ClassNotFound

3.实现

这是要执行任务

@Component("testTask")
public class testTask {
    public void execute(){
        System.out.println("计划任务开始执行。。。。。");
        System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
        System.out.println("计划任务执行结束。。。。。");
    }
}

下面开始配置,其中 testCorn 是我配置的corn 表达式,配置的是每五秒执行一次。关于Corn表达式 可参考 http://cron.qqe2.com/ ,在线配置表达式,很方便,满足大部分需求。

<bean id="SpringQtzJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">  
        <property name="targetObject">   <!-- 要执行的类名 -->
            <ref bean="testTask"/>   
        </property>  
        <property name="targetMethod">  <!-- 要执行的方法名称 -->  
            <value>execute</value>  
        </property>  
    </bean> 
  <!--定义调度器 -->
    <bean id="CronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">  
       <property name="jobDetail" ref="SpringQtzJobMethod"></property>  
       <property name="cronExpression" value="${testCorn}"></property>  
   </bean>
   
   <!-- 调度工厂 -->
   <bean id="SpringJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
        <property name="triggers">  
            <list>  
                <ref bean="CronTriggerBean"/>  
            </list>  
        </property>  
   </bean>    
#定义corn表达式
testCorn=0/5 * * * * ?

4.执行结果

 

posted @ 2018-07-12 11:19  脆皮香蕉  阅读(254)  评论(0编辑  收藏  举报