zoukankan      html  css  js  c++  java
  • 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.执行结果

  • 相关阅读:
    [转贴]Linux内核LTS长期支持版生命周期
    【转贴】Debian 10 "buster" 正式发布
    [百度经验]重置组策略的方法
    【转贴】我对测试工作的一些认识
    【转贴】使用sar进行性能分析
    【转贴】龙芯内核发展策略 已经支持k8s
    【转贴】优秀的龙芯Docker虚拟机解决方案
    Windows 2016 安装单机版本Oracle ASM 的简单说明
    【转贴】中标麒麟操作系统(龙芯版)与360安全浏览器完成产品兼容性互认证测试
    AQTime教程
  • 原文地址:https://www.cnblogs.com/li-zhi-long/p/9298542.html
Copyright © 2011-2022 走看看