本文仅仅是介绍基本的配置方式,并不详细介绍。 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; }