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

      所谓定时任务。就是依据我们设定的时间定时运行任务,就像定时发邮件一样,设定时间到了。邮件就会自己主动发送。

      在Spring大行其道的今天,Spring也提供了其定时任务功能,Spring Task。同Spring的其它功能一样,我们既能够通过配置文件也能够通过注解形式来实现。


    一、通过配置文件

    1、任务运行类

    import org.springframework.stereotype.Service;  
    @Service  
    public class TaskTest{  
          
        public void Test(){  
            System.out.println(new Date() + "定时任务開始…");  
        }  
    }
    

    2spring配置文件

    <?xml version="1.0" encoding="UTF-8"?

    > <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" <strong>xmlns:task="http://www.springframework.org/schema/task"</strong> xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd <strong>http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd</strong> http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:tx="http://www.springframework.org/schema/tx">   .   .   .   <context:component-scan base-package=" com.hp.task" />   <task:scheduled-tasks> <task:scheduled ref="taskTest" method="test" cron="0/5 * * * * ?"/>   </task:scheduled-tasks> </beans>


    參数说明:ref參数是运行任务类。method是类中须要运行的方法。cron运行表达式表示运行的时间及策略。


    二、通过注解

    1、任务运行类

    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    
    /**
     * 定时处理类
     * 
     * @author zjj
     * @date 2015-6-30
     */
    @Component
    public class TaskTest{
    	/**
    	 * 定时处理方法測试
    	 * 每5秒一次
    	 */
    	@Scheduled(cron = "0/5 * *  * * ?

    ") public void Test() { System.out.println(new Date() + "定时任务開始…"); } }


    这里须要两个注解:

      @Component:将该类完毕bean创建和自己主动依赖注入

      @Scheduled:将该方法定义为Spring定时调用的方法,当中cron指该方法运行的时间及策略


    2Spring配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:task="http://www.springframework.org/schema/task"
    	xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
    		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    		http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.1.xsd
    		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
    		http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd
    		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"
    	xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:tx="http://www.springframework.org/schema/tx">
    
      <context:component-scan base-package=" com.hp.task" /> 
    
      <!—开启这个配置,spring才干识别@Scheduled注解   -->  
      <task:scheduler id="scheduler" pool-size="10" />
      <task:executor id="executor" pool-size="10" />
      <task:annotation-driven scheduler="scheduler" executor="executor" />
    
    </beans>
    

    总结

      两种方式实现定时任务都是非常方便的,可是都存在同一个问题。定时策略在项目启动后我们无法动态改动。要改动就须要重新启动服务,如何做到定时策略动态设定也将是兴许解决的问题。



  • 相关阅读:
    maxContainerCapability 设置不足
    parquet code demo
    Windows下pip安装包报错:Microsoft Visual C++ 9.0 is required Unable to find vcvarsall.bat
    jvm 调优 工具
    hive premanent udf 发布...
    centos6.5 升级python 到 python 2.7.11 安装 pip
    mapreduce 关于小文件导致任务缓慢的问题
    数据可视化开源系统(python开发)
    vs 中 vim vax 快捷键
    ViEmu for VS2013-3.2.1 破解(转)
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7099232.html
Copyright © 2011-2022 走看看