本文僅僅是介紹基本的配置方式,並不詳細介紹。 java
spring 4.x 中內置了一種定時器,用戶經過簡單的配置便可實現調度功能。 spring
@Configuration @EnableAsync @EnableScheduling public class AppConfig { }
@Scheduled(initialDelay=1000, fixedRate=5000) public void doSomething() { // something that should execute periodically }
@Scheduled(initialDelay=1000, fixedRate=5000)
public void doSomething() {
// something that should execute periodically
}
使用該方式有兩種配置方式: spa
1. xml方式配置。 code
<!-- 定時發送郵件填寫timesheet通知--> <!-- 定義調用對象和調用對象的方法--> <bean id="projobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="scheduleService"/> 要進行調度的服務類 </property> <property name="targetMethod"> <value>scheduleSend</value> 服務類中要執行的方法 </property> </bean> <!-- 定義觸發時間--> <bean id="timecardSendMail" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="projobtask"/> </property> <!--cron表達式--> <property name="cronExpression"> <value>1 * * * * ?</value> </property> </bean> <!-- 總管理類 若是將lazy-init='false'那麼容器啓動就會執行調度程序--> <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="timecardSendMail"/> </list> </property> </bean>
@Bean public MethodInvokingJobDetailFactoryBean cronJob(ScheduleService scheduleService) { MethodInvokingJobDetailFactoryBean bean = new MethodInvokingJobDetailFactoryBean(); bean.setTargetObject(scheduleService); bean.setTargetMethod("scheduleSend"); return bean; } @Bean public CronTriggerBean timeCardSendMail(MethodInvokingJobDetailFactoryBean cronJob) throws ParseException { CronTriggerBean bean = new CronTriggerBean(); bean.setJobDetail(cronJob.getObject()); bean.setCronExpression("1 * * * * ?"); return bean; } @Bean public SchedulerFactoryBean startQuertz(CronTriggerBean timeCardSendMail) { SchedulerFactoryBean bean = new SchedulerFactoryBean(); bean.setTriggers(timeCardSendMail); bean.start(); return bean; }