zoukankan      html  css  js  c++  java
  • Quartz定时器的应用

    Spring中使用Quartz的3种方法(MethodInvokingJobDetailFactoryBean,implements Job,extends QuartzJobBean

    后两种方法比较简单易懂,我们介绍第一种MethodInvokingJobDetailFactoryBean的使用

    一般spring中使用MethodInvokingJobDetailFactoryBean是配置在xml中的,这里介绍一下在springcloud中的简单实用

    1、首先,在pom.xml中添加Quartz的依赖

    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
    </dependency>

     2、添加一个被调度的实现类,里面有需要执行的定时方法

    @Component
    public class QuartzTest {
    public void test(){
    String s = "my name is zhongguo";
    Date date = new Date();
    System.out.println("定时任务--每5秒启动一次,现在时间"+date +"输出:"+s);
    }
    }

    3、添加Quartz定时配置

    @Configuration
    public class QuartzConfig {
        private String time = "*/5 * * * * ? ";
        //配置定时任务
        @Bean(name = "quartzTestJobDetail")
        MethodInvokingJobDetailFactoryBean configTask(QuartzTest quartzTest){
            MethodInvokingJobDetailFactoryBean jobDetailFactoryBean = new MethodInvokingJobDetailFactoryBean();
            jobDetailFactoryBean.setConcurrent(false);// 是否并发执行
            jobDetailFactoryBean.setTargetObject(quartzTest);// 为需要执行的实体类对应的对象
            jobDetailFactoryBean.setTargetMethod("test");  // 需要执行的方法
            return jobDetailFactoryBean;
        }
        //配置触发器
        @Bean(name = "quartzTestJobTrigger")
        CronTriggerFactoryBean configTrigger(@Qualifier("quartzTestJobDetail") MethodInvokingJobDetailFactoryBean quartzTestJobDetail){
            CronTriggerFactoryBean triggerFactoryBean = new CronTriggerFactoryBean();
            triggerFactoryBean.setJobDetail(quartzTestJobDetail.getObject());
            triggerFactoryBean.setCronExpression(time);// cron表达式
            return triggerFactoryBean;
        }
        @Bean(name = "quartzTestTrigger")
        CronTrigger quartzTestTrigger(@Qualifier("quartzTestJobTrigger")CronTriggerFactoryBean quartzTestTrigger ){
            return quartzTestTrigger.getObject();
        }
        //配置Scheduler
        @Bean(name = "scheduler")
        SchedulerFactoryBean schedulerFactory( @Qualifier("quartzTestTrigger") Trigger quartzTestTrigger){
            SchedulerFactoryBean bean = new SchedulerFactoryBean();
            bean.setStartupDelay(1);// 延时启动,应用启动1秒后
            bean.setAutoStartup(true);
            bean.setTriggers(quartzTestTrigger);// 注册触发器
            return bean;
        }
    }

    4、启动springcloud项目测试,结果显示:定时任务正确

     

  • 相关阅读:
    sql注入漏洞与防范
    微信小程序-工具,弹出当前系统代理不是安全代理处理方法
    微信小程序-02 小程序关注组件
    微信小程序-01 小数保留二位
    http 转hhttps
    php 函数-ksort
    iOS 原生二维码扫描
    iOS 打包错误 all-product-headers.yaml' not found
    iOS Tableview点击cell 会往上跳
    WKWebView 使用
  • 原文地址:https://www.cnblogs.com/jing5464/p/12692078.html
Copyright © 2011-2022 走看看