spring/springboot实现定时任务

一、spring中通过配置文件方式实现定时任务

Spring3.0以后自带有定时任务的实现功能:

一、修改spring配置文件的内容:在文件头添加命名空间和描述

  1. xml version="1.0" encoding="UTF-8"? > 
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.      。。。。。。
  5.     xmlns:task="http://www.springframework.org/schema/task"           
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans
  7.           。。。。。。
  8.           http://www.springframework.org/schema/task 
  9.           http://www.springframework.org/schema/task/spring-task-3.0.xsd">  
  10.  
  11. <task:annotation-driven />                   //支持注解

二、写对应程序执行时间的配置文件:创建一个task.properties配置文件,内容如下

  1. jobs.schedule.task1=0/10 * * * * ?      //每十秒执行一次
  2.  
  3. jobs.schedule.task2=0  40 * * * ?          //每个小时的四十分执行一次
  4.   
  5. jobs.schedule.task3=0  30  4 * * ?           //每天的四点半执行一次
  6.  
  7. jobs.schedule.task4=0  0/50  * * * ?      //每五十分钟执行一次

       更多时间的设置自行百度

三、对应定时任务执行类

 

  1. @PropertySource("classpath:task.properties")
  2. @Component
  3. public class test{
  4.      
  5.       @Bean
  6.       public static PropertySourcesPlaceholderConfigurer propertyConfigInDev()
  7.       {
  8.                return new PropertySourcesPlaceholderConfigurer();                       //加上之后spring才能识别${}中的内容
  9.       }
  10.      
  11.       @Value("${jobs.schedule.task2}")
  12.       public String abc;                                 //此时abc的内容为:0  40 * * * ?
  13.  
  14.       @Scheduled(cron = "${jobs.schedule.task1}" )     //定义十秒执行一次
  15.       public void task(){
  16.                 System.out.println("每十秒输出一次该语句");
  17.       }
  18. }

 

二、springboot 定时任务的使用

1、pom 包配置

引入 spring-boot-starter 依赖,其实springboot项目中很多包有依赖到它。

2、启动类添加启动定时配置

在启动类(Application)上面加上 @EnableScheduling注解即可开启定时

3、创建定时任务实现类

    @Component
    public class SchedulerTask {
        @Scheduled(cron="*/7 * * * * ?")   
        private void test1(){
            System.out.println("7秒执行一次test1定时任务");
        }

        @Scheduled(fixedRate = 5000)      
        private void test2(){
            System.out.println("5秒执行一次test2定时任务");
        }
    }

说明

@Scheduled 注解可以设置cron、fixedRate两种方式,见上面两个定时任务。

其中cron的设置可以见最上面的说明,fixedRate的设置说明如下:

  • @Scheduled(fixedRate=6000) :上一次开始执行时间点之后6秒再执行,这里是上次任务执行开始时间

  • @Scheduled(fixedDelay=6000) :上一次执行完毕时间点之后6秒再执行,这里是上次任务执行结束之后

  • @Scheduled(initialDelay=1000,fixedRate=6000) :第一次延迟1秒后执行,之后按 fixedRate 的规则每6秒执行一次

你可能感兴趣的:(spring/springboot实现定时任务)