现在在网上搜的定时调度大都是一些很老的实现方式了,全部是配置文件来完成的,写起来麻烦,并且还不易上手。我通过朋友找到了一个比较简单的办法来和大家分享,希望能给你带来些方便。
1.在service层创建一个CronService类。例如:
package com.eerong.service;
import org.springframework.stereotype.Service;
@Service
public class CronService {
public void beginTask() {
System.out.println("定时调度开始了");
System.out.println("执行要执行的方法");
System.out.println("定时调度结束了");
}
}
2.再创建一个配置文件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.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd"
default-autowire="byName">
<task:scheduled-tasks>
<task:scheduled ref="cronService" method="beginTask" cron="0 30 8 ? * MON" />
<!-- 这里的ref表示来自哪个service,method就是该类中要定时调度的方法名,cron是表示按照什么时间来执行method属性的方法() -->
</task:scheduled-tasks>
</beans>
定时调度就这么简单的搞定了,比起网上那些繁琐的配置省事多了。如果你有多个方法需要执行,那就再写一个<task:scheduled ref="cronService" method="beginTask" cron="0 30 8 ? * MON" />就行了,改下名称和时间 就OK了。
一些时间的列子。可以到网上搜下这方面的表达式:
|
表达式 |
意思(触发时刻) |
|
0 0 12 * * ? |
每天中午12点 |
|
0 15 10 * * ? 2005 |
在2005年的每天10:25 |
|
0 10,44 14 ? 3 WED |
在3月里每个周三的14:10和14:44 |
|
0 15 10 ? * 6L 2002-2005 |
从2002年到2005年里,每个月的最后一个星期五的10:15 |
|
0 0 12 1/5 * ? |
从当月的第一天开始,然后在每个月每隔5天的12:00 |
|
0 15 10 ? * 6#3 |
每个月第3个周五的10:15 |
浙公网安备 33010602011771号