zoukankan      html  css  js  c++  java
  • spring boot 与 quartz 简单整合

    1:AutowiringSpringBeanJobFactory.java

    复制代码
    package com.microwisdom.grgzpt.jobs;
    
    import org.quartz.spi.TriggerFiredBundle;
    import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.scheduling.quartz.SpringBeanJobFactory;
    
    /**
     * Created by yan on 2017/5/17.
     */
    public class AutowiringSpringBeanJobFactory extends SpringBeanJobFactory
            implements ApplicationContextAware {
    
        private transient AutowireCapableBeanFactory beanFactory;
    
        @Override
        public void setApplicationContext(final ApplicationContext context) {
    
            beanFactory = context.getAutowireCapableBeanFactory();
        }
    
        @Override
        protected Object createJobInstance(final TriggerFiredBundle bundle) throws Exception {
            final Object job = super.createJobInstance(bundle);
    
            beanFactory.autowireBean(job);
    
            return job;
        }
    
    
    }
    复制代码

    2:GrdbJob.java

    复制代码
    package com.microwisdom.grgzpt.jobs;
    
    import com.google.gson.Gson;
    import com.microwisdom.grgzpt.dbsy.DbsyVo;
    import com.microwisdom.grgzpt.redis.RedisService;
    import com.microwisdom.grgzpt.utils.DateUtil;
    import org.quartz.DisallowConcurrentExecution;
    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    import org.springframework.beans.factory.annotation.Autowired;
    
    /**
     * Created by yan on 2017/5/16.
     * 个人待办任务
     */
    @DisallowConcurrentExecution
    public class GrdbJob implements Job{
    
        @Autowired
        RedisService redisService;
    
        @Override
        public void execute(JobExecutionContext context) throws JobExecutionException {
            System.out.println("Now:"+ DateUtil.getCurrTime());
    
            redisService.set(vo.getSwrydm(), new Gson().toJson(vo));
        }
    }
    复制代码

    3:SchedulerConfig.java

    复制代码
    package com.microwisdom.grgzpt.jobs;
    
    import org.quartz.JobDetail;
    import org.quartz.SimpleTrigger;
    import org.quartz.Trigger;
    import org.quartz.spi.JobFactory;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.beans.factory.config.PropertiesFactoryBean;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.io.ClassPathResource;
    import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
    import org.springframework.scheduling.quartz.JobDetailFactoryBean;
    import org.springframework.scheduling.quartz.SchedulerFactoryBean;
    import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;
    
    import java.io.IOException;
    import java.util.Properties;
    
    /**
     * Created by yan on 2017/5/17.
     */
    @Configuration
    public class SchedulerConfig {
    
        @Bean
        public JobFactory jobFactory(ApplicationContext applicationContext) {
            AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory();
    
            jobFactory.setApplicationContext(applicationContext);
    
            return jobFactory;
        }
    
        @Bean
        public SchedulerFactoryBean schedulerFactoryBean(JobFactory jobFactory, Trigger simpleJobTrigger)
                throws IOException{
            SchedulerFactoryBean factory = new SchedulerFactoryBean();
    
            factory.setJobFactory(jobFactory);
            factory.setQuartzProperties(quartzProperties());
            factory.setTriggers(simpleJobTrigger);
    
            return factory;
        }
    
    
        @Bean
        public CronTriggerFactoryBean simpleJobTrigger(@Qualifier("simpleJobDetail") JobDetail jobDetail) {
            CronTriggerFactoryBean  factoryBean = new CronTriggerFactoryBean ();
    
            factoryBean.setJobDetail(jobDetail);
            factoryBean.setStartDelay(1000L);
            factoryBean.setName("trigger1");
            factoryBean.setGroup("group1");
            //周1至周5,每天上午8点至下午18点,每分钟执行一次
            factoryBean.setCronExpression("0 0/1 8-18 ? * 2-6");
    
            return factoryBean;
        }
    
        @Bean
        public JobDetailFactoryBean simpleJobDetail() {
            JobDetailFactoryBean factoryBean = new JobDetailFactoryBean();
    
            factoryBean.setJobClass(GrdbJob.class);
            factoryBean.setGroup("group1");
            factoryBean.setName("job1");
    
            return factoryBean;
        }
    
    
    
        @Bean
        public Properties quartzProperties() throws IOException {
            PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
    
            propertiesFactoryBean.setLocation(new ClassPathResource("/quartz.properties"));
    
            propertiesFactoryBean.afterPropertiesSet();
    
            return propertiesFactoryBean.getObject();
        }
    
    }
    复制代码
     
     
  • 相关阅读:
    viewer.js 显示图片名称和照片属性
    js中判断数组中是否包含某元素的方法(转载)
    js脚本如何更新, js后加?v=版本号的原因(转载)
    iview Carousel 走马灯或轮播图 点击事件失效
    sqlserver 查询表中所有字段的最大长度(转载)
    Ueditor文字和echarts图片 生成 word 前端解决方案
    Spark Streaming Backpressure分析
    Spark任务调度流程及调度策略分析
    Spark资源调度及任务调度
    spark streaming流式计算---监听器
  • 原文地址:https://www.cnblogs.com/whm-blog/p/10941472.html
Copyright © 2011-2022 走看看