1. 配置spring文件
读bean中加入task任务
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation=""中加入
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd
这类似的spring小功能应该放到最后,因为需要为spring准备上下文或者是实例化对象后才能操作其他组件任务。
2. 配置task任务和扫描task任务执行的包,让其能加入到spring的factorybean中
<!-- task扫描包也就是调用执行任务的类所在包 -->
<context:component-scan base-package="task" />
<!-- Spring task 任务调度注解 -->
<task:annotation-driven/>
3. 编写task任务调动类
package task;
@Component("taskForTest")
public class TaskTest {
@Scheduled(cron="0 * * * * *")
public void taskJob() {
System.out.println("当前任务调度:" + new Date());
}
}
4. 配置@Scheduled(cron="* * * * * *")
CRON表达式 含义 一般cron最多七个占位符分别是秒、分、时、日、月、年、星期,一般星期省略。如果需要某个时间段内执行,那么分别在是时间段使用','隔开。
“0 * 0,1 * * ?” 每天的凌晨0点至1点时间段内每1分钟一次触发
5. 效果展示
防止上一次任务未执行完成,下一次任务再次进入设置,两种设置方式解决:
在spring配置文件中配置<property name="concurrent" value="true" />
@DisallowConcurrentExecution的注释
@DisallowConcurrentExecution 禁止并发执行多个相同定义的JobDetail, 这个注解是加在Job类上的, 但意思并不是不能同时执行多个Job, 而是不能并发执行同一个Job Definition(由JobDetail定义), 但是可以同时执行多个不同的JobDetail。