最近,遇到的一个需求,需要执行定时任务,每个一定时间需要执行某个方法
因为项目是SpringMVC的项目,所以使用的是Spring @Scheduled(由于quartz应用起来太麻烦,所以没有采用)
接下来是应用步骤:
1、配置文件
1.1 需要配置一项 xmlns 如下:
xmlns:task="http://www.springframework.org/schema/task"
1.2 配置 xsi:schemaLocation(在applicationContext.xml中的beans属性)
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd
1.3 配置扫描 (在applicationContext.xml中的beans标签内)
<!-- 定时器 注解 -->
<task:annotation-driven />
1.4 配置扫描路径,做了定时总得让Spring扫描到,对吧
<!-- 包的扫描路径配置 -->
<context:component-scan base-package="com.wl"> <context:exclude-filter type="regex" expression=".common.*" /> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan>
1.5 创建任务类
类要加上@Component注解,Spring才能扫描到,另外fixedRate 和 fixedDelay 区别加在注释上了
@Component public class Task { /** * 每隔5分钟执行 */ @Scheduled(fixedRate = 1000*300) public void task1(){ // do! } /** * 上一个任务执行结束后5分钟,再执行下一个任务 */ @Scheduled(fixedDelay = 1000*300) public void task2(){ // do! } /** * 上一个任务执行结束后5分钟,再执行下一个任务 */ @Scheduled(fixedDelay = 1000*300) public void task2(){ // do! }
/** * 每隔5分钟执行 */
@Scheduled(cron = 0 0/5 * * * ? )
public void task3(){ // do! }
}
附赠cron格式在线生成器
http://cron.qqe2.com/