簡介Spring Scheduler裏有兩個概念:任務(Task)和運行任務的框架(TaskExecutor/TaskScheduler)。TaskExecutor顧名思義,是任務的執行器,允許我們異步執行多個任務。TaskScheduler是任務調度器,來運行未來的定時任務。觸發器Trigger可以決定定時任務是否該運行了,最常用的觸發器是CronTrigger,具體用法會在下面詳細介紹。Spring內置了多種類型的TaskExecutor和TaskScheduler,方便用戶根據不同業務場景選擇。
運行
用xml配置Spring Scheduler的話,這樣就行了:
<?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-4.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd">
<task:scheduler id="myScheduler"/>
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="doSomethingTask" method="doSomething" cron="0 * * * * *"/>
</task:scheduled-tasks>
</beans>
當然需要能夠reference到doSomethingTask這個實例了。
用註解配置Spring Scheduler的方式如下:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class DoSomethingTask {
@Scheduled(cron="0 * * * * *")
public void doSomething() {
System.out.println("do something");
}
}