一直不执行,发现没有配置:
<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
备注1:
如果spring-task.xml中配置了scheduler,使用如下配置也能正常运行
<task:annotation-driven scheduler="weScheduler"/>
备注2:
网上说还需要有:
<context:annotation-config/>
发现有没有这句均能正常运行
版本:
SpringBoot:2.0.2.release