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

    感觉很久没写这个东西,项目太忙,人也变懒了很多,哈哈哈~近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候需要自动创建一些必要的数据到DB,借此机会也好好的GET了一下定时任务方面的知识,

    一.TimerTask

    Java本身有提供自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务,但是这种方式只能让程序按照某一频度执行,比如一分钟或者一个小时执行一次,并不是很实用

    二.Quartz

    Quartz是一个开源的作业调度框架,由java编写,在.NET平台为Quartz.Net,通过Quart可以快速完成任务调度的工作(这段是直接百度过来的),简单来讲就是Quartz是一个可配置时间段,也可按频度来执行指定的业务的调度器,但是需要配置的东西非常多.

    三.Spring Task

    可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,并且支持多种方式配置,因为这里使用了task所以也简单记录一下使用方法

    第一种:配置文件方式

    第一步:编写业务类

    1 @Service  
    2 public class TaskService {  
    3       
    4     public void job() {  
    5         System.out.println(“定时任务启动。。。”);  
    6     }  
    7 }  

    第二步:在spring配置文件头中添加命名空间及描述  

    <beans xmlns="http://www.springframework.org/schema/beans"  
        xmlns:task="http://www.springframework.org/schema/task"   
        以下为需要引入的spring配置文件头  
        xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">  
    

     第三步:spring配置文件中设置具体的任务

    <task:scheduled-tasks>   
            <task:scheduled ref="任务类" method="需要执行的方法" cron="0 * * * * ?"/>   
    </task:scheduled-tasks>  
      
    <context:component-scan base-package="spring扫描注解使用 " />  

    以上是通过配置文件的方式来使用springtask定时任务功能,配置来说比较简单,关于配置文件里面的cron属性为定时任务触发时间的表达式,可按年、月、日、时、分、秒配置触发时间。

    第二种:使用注解形式

    这里就不详细介绍注解的源码了,有兴趣的可以自己去看下官方源码,直接上使用方法

    第一步:编写业务类

     1 @Component
     2 public class Schedule {
     3     
     4     /**
     5      * 工作日每天早上0、4、6点执行
     6      */
     7     @Scheduled(cron = "0 0 0,4,6 ? * MON-FRI")
     8     void createChildSign(){
     9         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EEEE");
    10         String format = sdf.format(new Date());
    11         LOGGER.info("【执行任务{}】", format);
    12         
    13     }
    14 }

     第二步:在Spring配置文件中添加task相关的配置(同配置文件一致,需要配置文件头中添加命名空间及描述 ):

        <context:annotation-config />  
        <!—spring扫描注解的配置   -->  
        <context:component-scan base-package="spring扫描注解使用" />  
          
      <!—开启这个配置,spring才能识别@Scheduled注解   -->  
        <task:annotation-driven scheduler="qbScheduler" mode="proxy"/>  
        <task:scheduler id="qbScheduler" pool-size="10"/>  

    理论上只需要加上<task:annotation-driven />这句配置就可以了,其他参数都不是必须的。

    以上就是通过两种方式完成spring定时任务,简单来说就是配置文件少,效率高,使用简单,而且提供了可配置的cron属性,用于配置执行时间和频度.

    关于cron表达式可自行百度匹配规则.能多学一点是一点,学多了自然见识就长了...

  • 相关阅读:
    C#开发微信公众平台-就这么简单(附Demo)
    Newtonsoft.Json高级用法
    C#获取文件的MD5码
    C#动态执行代码
    c#插件式开发
    利用反射执行代码
    yield关键字用法与解析(C# 参考)
    HttpContext.Current.Cache和HttpRuntime.Cache的区别,以及System.Runtime.Caching
    GZip压缩与解压缩
    Asp.Net 请求处理机制
  • 原文地址:https://www.cnblogs.com/Bengi/p/8288971.html
Copyright © 2011-2022 走看看