sping的@Schedule实现定时任务

1.配置文件

  在spring配置文件中添加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">

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
      http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
      http://www.springframework.org/schema/context  
      http://www.springframework.org/schema/context/spring-context.xsd  
      http://www.springframework.org/schema/mvc  
      http://www.springframework.org/schema/mvc/spring-mvc.xsd
      http://www.springframework.org/schema/task
      http://www.springframework.org/schema/task/spring-task-3.0.xsd">

    <context:property-placeholder
        ignore-unresolvable="true" location="classpath*:/config.properties" />

    <!-- 自动扫描包 -->
    <context:component-scan base-package="cn.com.prac.controller" />
    <!-- 启动定时任务的注解驱动 -->
    <task:annotation-driven /> 
    <!-- 配置定时任务的线程池 -->
    <task:scheduler id="myScheduler" pool-size="5" />
    
    ......

</beans>

2.定时任务类

package cn.com.prac.controller;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class ScheduleTest {

    @Scheduled(cron="* * * * * ?")
    public void test(){
        System.out.println("--------测试:每秒执行一次");
    }
    
    @Scheduled(cron="0/5 * * * * ?")
    public void test2(){
        System.out.println("--------测试:每5秒执行一次");
    }
}

 3.不用配置文件,使用@EnableScheduling,@Component,@Scheduled注解

@EnableScheduling:启对计划任务的支持,@Component:定义spring管理Bean,@Scheduled:该方法是计划任务

package cn.com.prac.controller;

import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@EnableScheduling
@Component
public class ScheduleTest {

    @Scheduled(cron="* * * * * ?")
    public void test(){
        System.out.println("--------测试:每秒执行一次");
    }
    
    @Scheduled(cron="0/5 * * * * ?")
    public void test2(){
        System.out.println("--------测试:每5秒执行一次");
    }
}
原文地址:https://www.cnblogs.com/-scl/p/7798648.html