Spring-Task(自主开发的定时任务工具)--有关于注解的部分

1.介绍

   Spring3.0以后自主开发的定时任务工具,spring task,可以将它比作一个轻量级的Quartz,

   而且使用起来很简单,除spring相关的包外不需要额外的包,而且支持注解和配置文件两种形式。

 

2.配置文件方式

   第一步:编写作业类

        即普通的pojo,如下:

             import org.springframework.stereotype.Service;  

             @Service 

             public class TaskJob {  

                    public void job1() {  

                         System.out.println(“任务进行中。。。”); 

                    } 

             }

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

            <beans xmlns="http://www.springframework.org/schema/beans"  

                  xmlns:task="http://www.springframework.org/schema/task"   

                   。。。。。。

                 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="taskJob" method="job1" cron="0 * * * * ?"/>

             </task:scheduled-tasks

             <context:component-scan base-package=" com.gy.mytask " />  

        说明:ref参数指定的即任务类,method指定的即需要运行的方法,cron及cronExpression表达式。

                  <context:component-scan base-package="com.gy.mytask" />spring扫描注解用的。

 

3.使用注解形式

    介绍:也许我们不想每写一个任务类还要在xml文件中配置下,我们可以使用注解@Scheduled,

    源码:

          源文件中该注解的定义:

          @Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.ANNOTATION_TYPE})   

          @Retention(RetentionPolicy.RUNTIME

          @Documented  

         public @interface Scheduled{

                public abstract String cron();

                public abstract long fixedDelay();

                public abstract long fixedRate();  

          }

           可以看出该注解有三个方法或者叫参数,分别表示的意思是:

               cron:指定cron表达式

               fixedDelay:

                   官方文档解释:An interval-based trigger where the interval is measured from the completion time of the previous task.

                                           The time unit value is measured in milliseconds.

                   即表示从上一个任务完成开始到下一个任务开始的间隔,单位是毫秒。

               fixedRate:

                  官方文档解释:An interval-based trigger where the interval is measured from the start time of the previous task.

                                           The time unit value is measured in milliseconds.

                  即从上一个任务开始到下一个任务开始的间隔,单位是毫秒。

      实现:

              第一步:编写pojo

               import org.springframework.scheduling.annotation.Scheduled;    

               import org.springframework.stereotype.Component;  

               @Component(“taskJob”) 

               public class TaskJob { 

                      @Scheduled(cron = "0 0 3 * * ?")  

                       public void job1() {

                           System.out.println(“任务进行中。。。”);

                         } 

                }

         第二步:添加task相关的配置:

              <?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:tx="http://www.springframework.org/schema/tx" 

                            xmlns:task="http://www.springframework.org/schema/task"  

                            xsi:schemaLocation="

                               http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 

                               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

                               http://www.springframework.org/schema/context   

                               http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd

                                http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  

                                http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"  

                         default-lazy-init="false">

                         <context:annotation-config />

                         <!—spring扫描注解的配置   -->

                         <context:component-scan base-package="com.gy.mytask" /> 

                         <!—开启这个配置,spring才能识别@Scheduled注解   --

                         <task:annotation-driven scheduler="qbScheduler" mode="proxy"/>

                         <task:scheduler id="qbScheduler" pool-size="10"/>

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

                         spring task还有很多参数,具体参考xsd文档http://www.springframework.org/schema/task/spring-task-3.0.xsd。

           

学习来源:https://blog.csdn.net/u010160778/article/details/72778842

 

               

posted @ 2020-08-28 15:03  小窝蜗  阅读(345)  评论(0)    收藏  举报