Sprint Boot项目搭建STEP5:Sprint Boot 之定时任务Scheduled
1.pom引入quartz依赖后编译。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
2.开启定时任务,Application加入@EnableScheduling注解。
3.创建任务类,ScheduledTasks,写一个简单的任务逻辑loggerErrorHello,控制台和日记输出Hello。
package com.zhy.study.timer;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Repository;
/**
* @Description: TODO(任务逻辑代码)
* @author zengHY
* @date 2019年4月13日 下午8:53:49
*
*/
@Repository
public class ScheduledTasks {
Logger LOG = Logger.getLogger(ScheduledTasks.class);
public void loggerErrorHello(){
System.out.println("Hello");
LOG.error("Hello");
}
}
4.创建任务配置类,SchedledConfig.java,来调用第三步创建的任务方法。
package com.zhy.study.common.config;
import org.quartz.CronTrigger;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import com.zhy.study.timer.ScheduledTasks;
/**
* @Description: 定时器
* @author zengHY
* @date 2019年4月13日 下午8:53:49
*
*/
@Configuration
public class SchedledConfig {
@Bean
public SchedulerFactoryBean schedulerFactory(CronTrigger[] cronTriggers){
SchedulerFactoryBean schedulerFactory = new SchedulerFactoryBean ();
schedulerFactory.setTriggers(cronTriggers);
return schedulerFactory;
}
@Bean(name = "factoryBean1")
public MethodInvokingJobDetailFactoryBean factoryBean1(ScheduledTasks scheduledTasks){
MethodInvokingJobDetailFactoryBean bean = new MethodInvokingJobDetailFactoryBean();
//这儿设置对应的Job对象
bean.setTargetObject(scheduledTasks);
//这儿设置对应的方法名 与执行具体任务调度类中的方法名对应
bean.setTargetMethod("loggerErrorHello");
bean.setConcurrent (false);
return bean;
}
@Bean(name = "triggerBean1")
public CronTriggerFactoryBean tenClockCronTriggerBean(@Qualifier("factoryBean1")MethodInvokingJobDetailFactoryBean factoryBean1){
CronTriggerFactoryBean trigger = new CronTriggerFactoryBean ();
trigger.setJobDetail (factoryBean1.getObject ());
//每天10点30分执行(秒 分 时 )
trigger.setCronExpression ("0 25 10 * * ?");
return trigger;
}
}
配置执行时间然后启动等待执行。