zoukankan      html  css  js  c++  java
  • spring 定时任务

    第一步 新建任务类, 包括需要定时执行的方法

    package com.quicksand.task;

    import org.springframework.stereotype.Service;

    @Service("TestTaskImpl")//如果手动xml方式配置bean的话 这里注解可以省略
    public class TestTaskImpl {

      //定时执行的方法

    public void mothed1() {
      // TODO Auto-generated method stub
      System.out.println("定时执行");
    }

    }

    第二步 添加spring配置

    <!-- 要调用的工作类 这里可以使用配置的bean 也可以用注解的方式配置为自动扫描-->
    <!-- <bean id="testTask" class="com.quicksand.task.TestTaskImpl"></bean> -->

     

    <!-- 定义调用对象和调用对象的方法 -->
    <bean id="testTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
      <!-- 调用的类 -->
      <property name="targetObject" ref="TestTaskImpl" />
      <!-- 调用类中的方法 -->
      <property name="targetMethod" value="mothed1"/>
      <!-- 作业是否并发调度 --> 
      <!--<property name="concurrent" value="true" /> -->
    </bean> 

    <!--触发器配置 介绍下列2种方式 根据需要选一种即可-->

    方式1.相对复杂,控制灵活
    <bean id="testTaskCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
      <property name="jobDetail" ref="testTask" />

      <!--这里的value使用的表达式可自行百度cronExpression-->
      <property name="cronExpression" value="0/30 * * * * ?" />
    </bean>

    方式2 简单易使用

    <bean id="testTaskCronTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
      <property name="jobDetail" ref="testTask" />
      <property name="startDelay" value="0" /><!-- 调度工厂实例化后,经过0秒开始执行调度 -->
      <property name="repeatInterval" value="5000" /><!-- 每5秒调度一次 -->
    </bean>

    <!-- 调度任务管理 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
    <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
      <property name="triggers">
      <list>
      <ref bean="testTaskCronTrigger" />
      </list>
      </property>

    第三步 测试启动 在测试方法中启动容器即可

    ApplicationContext context=new ClassPathXmlApplicationContext("spring-mvc-task.xml");
    System.out.println("任务已启动...");

    注:依赖jar包 org.slf4j.jar

    测试效果如下:

    以上内容参考其他前辈们的文章,还没仔细研究这里方便快速了解使用的同学

    没养成写博客这习惯 写起来还真费劲,以后得练练才行...

  • 相关阅读:
    IntelliJ Idea 2017 免费激活方法
    RabbitMq、ActiveMq、ZeroMq、kafka之间的比较
    Oracle锁的机制
    序列化和持久化的区别
    Hibernate框架之get和load方法的区别
    Hibernate框架之入门案例
    Oracle添加数据报文字与格式字符串不匹配错误
    Linux设备驱动程序 之 异步通知
    Linux设备驱动程序 之 poll和select
    Linux设备驱动程序 之 休眠
  • 原文地址:https://www.cnblogs.com/3dianpomian/p/5892725.html
Copyright © 2011-2022 走看看