最近在遇到了需要以定时任务的方式执行的业务代码.因为项目中已引用了spring 4.3.3,所以打算以框架中的功能来完成此事.首先是各种百度,发现说的都是老版本的,都是说的3.+的版本,配置起来根本不管用.随便查阅了官网的文档,最终配置成功.现总结如下:
1.要注意你用的SPRING的版本.我配置成功的版本为4.3.3.
2.配置的头部增加:
xmlns:task="http://www.springframework.org/schema/task"
和:
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-4.3.xsd
3. 增加配置:
<!-- tast 定时任务 -->
<task:annotation-driven scheduler="任务定时器线程" />
<task:scheduler id="任务定时器线程" pool-size="10"/>
4.增加或修改配置,即注释扫描的包范围.我现已用了MVC模式,所以是修改,增加了任务包位置.
<context:component-scan base-package="com.eppear.jpfm.controller,com.eppear.jpfm.weixin" />
5.在你类名上同时加两个注解,在要执行的方法上加注解:
@Configuration
@EnableScheduling
public class AccessTokenUtil {
private static Logger log = LoggerFactory.getLogger(AccessTokenUtil.class);
@Scheduled(fixedRate = 5000)
public void testTask(){
log.debug("执行了定时任务方法!");
}
}
@Scheduled(fixedRate = 5000) 的意思是,每隔5000毫秒执行一次.当然还可以进行其它方式的配置.具体可以参考【这里】配置完成,运行起来,控制台会看到如下信息:
特别要提醒的是:@Scheduled所标注的方法,一是不能有返回值,即void类型,二是不能有参数.否则可能会报错.