SpringBoot使用@Scheduled执行定时任务

版权声明:本文为博主原创文章,转载请说明出处 https://blog.csdn.net/u010002184/article/details/85253173

一直不执行,发现没有配置:

    <task:annotation-driven/>

这个配置的作用就是使@Scheduled注解生效

整体配置如下:

1 spring-task.xml:

<?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:task="http://www.springframework.org/schema/task"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
       http://www.springframework.org/schema/task
       http://www.springframework.org/schema/task/spring-task.xsd">

    <!--能识别整个项目中的@Scheduled,与在哪个包下无关 -->
    <task:annotation-driven/>

</beans>

2 注入配置文件,使spring-task.xml生效

@Configuration
@ImportResource(locations = {"classpath:spring-task.xml"})
public class TaskConfig {
}

3 写定时方法

service包下:

    @Scheduled(cron = "0/2 * * * * ?")
    public void scheduleMethod() {
        logger.info(new Date() + ",scheduleMethod");
    }

task包下:

package com.weather.weatherexpert.task;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 *
 */
@Component
public class ScheduleTask {

    private Logger logger = LoggerFactory.getLogger(ScheduleTask.class);

    @Scheduled(cron = "0/2 * * * * ?")
    public void scheduleMethod() {
        logger.info(new Date() + ",scheduleMethod");
    }


}

ScheduleTask的@Component注解别忘了加,不然也不运行!

4 输出日志如下:

 INFO: 2018-12-25 19:48:08 [com.weather.weatherexpert.task.ScheduleTask:25] Tue Dec 25 19:48:08 CST 2018,scheduleMethod
 INFO: 2018-12-25 19:48:08 [com.weather.weatherexpert.service.WeatherService:304] Tue Dec 25 19:48:08 CST 2018,scheduleMethod
 INFO: 2018-12-25 19:48:10 [com.weather.weatherexpert.service.WeatherService:304] Tue Dec 25 19:48:10 CST 2018,scheduleMethod
 INFO: 2018-12-25 19:48:10 [com.weather.weatherexpert.task.ScheduleTask:25] Tue Dec 25 19:48:10 CST 2018,scheduleMethod
 INFO: 2018-12-25 19:48:12 [com.weather.weatherexpert.service.WeatherService:304] Tue Dec 25 19:48:12 CST 2018,scheduleMethod
 INFO: 2018-12-25 19:48:12 [com.weather.weatherexpert.task.ScheduleTask:25] Tue Dec 25 19:48:12 CST 2018,scheduleMethod

扫描二维码关注公众号,回复: 4795968 查看本文章

备注1:

如果spring-task.xml中配置了scheduler,使用如下配置也能正常运行

 <task:annotation-driven scheduler="weScheduler"/>

备注2:

网上说还需要有:

 <context:annotation-config/>

发现有没有这句均能正常运行

版本:

SpringBoot:2.0.2.release

猜你喜欢

转载自blog.csdn.net/u010002184/article/details/85253173