Sprint Boot项目搭建STEP5:Sprint Boot 之定时任务Scheduled

1.pom引入quartz依赖后编译。

不用内置定时引入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; 
    }  
}

配置执行时间然后启动等待执行。
准时执行

猜你喜欢

转载自blog.csdn.net/weixin_43733834/article/details/89278691
今日推荐