Spring boot quartz

2018-10-21  本文已影响0人  默写_0c03

Spring Boot有很多定时任务,这里介绍一下在Spring Boot中如何使用quartz框架

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-quartz</artifactId>
        </dependency>
import org.quartz.spi.TriggerFiredBundle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.scheduling.quartz.AdaptableJobFactory;
import org.springframework.stereotype.Component;


@Component
public class SpringJobFactory extends AdaptableJobFactory {

    @Autowired
    private AutowireCapableBeanFactory capableBeanFactory;

    @Override
    protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
        Object jobInstance = super.createJobInstance(bundle);
        capableBeanFactory.autowireBean(jobInstance);
        return jobInstance;
    }
}
import org.quartz.Scheduler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;

@Configuration
public class QuartzConfig {
    @Autowired
    private SpringJobFactory springJobFactory;

    @Bean
    public SchedulerFactoryBean schedulerFactoryBean() {
        SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
        schedulerFactoryBean.setJobFactory(springJobFactory);
        return schedulerFactoryBean;
    }

    @Bean
    public Scheduler scheduler() {
        return schedulerFactoryBean().getScheduler();
    }
}
import com.example.springbootquartz.dao.AthletesRepository;
import com.example.springbootquartz.dao.WalksRepository;
import com.example.springbootquartz.entity.Athletes;
import com.example.springbootquartz.entity.Walks;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.time.LocalDate;
import java.util.List;
import java.util.Random;

@Component
public class WalksJob {
    @Resource
    private AthletesRepository athletesRepository;

    @Scheduled(cron = "59 59 23 * * ? ")
    public void updateTodayWalks() throws Exception {
        List<Athletes> athletes = athletesRepository.findAll();
        for (int i = 0; i < athletes.size(); i++) {
            List<Walks> walks = athletes.get(i).getWalksList();
            walks.add(new Walks((long) new Random().nextInt(100000), LocalDate.now().toString()));
            athletesRepository.save(athletes.get(i));
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读