一个简单-定时任务组件(quartz)-demo

18 篇文章 0 订阅

一:定时任务组件(quartz)
1.应用场景(相当于闹钟,可以开发一个或者多个定时任务)
①:每天晚上12点生成当天的报表,第二天要看
②:订单超时
③:延时发送短信

2.定时任务组件Quartz(概念和demo)
1.Quartz既可以单独使用也可以跟spring框架整合使用,在实际开发中一般会使用后者。(demo)
①.引入依赖

<dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz</artifactId>
    <version>2.2.1</version>
  </dependency>
  <dependency>
    <groupId>org.quartz-scheduler</groupId>
    <artifactId>quartz-jobs</artifactId>
    <version>2.2.1</version>
  </dependency>

②.自定义一个MyJob类中写一个方法run()–要执行的任务类以及方法

 public class MyJob {

    public void run(){
        System.out.println(new Date()+" 执行了");
    }
  }

③.提供Spring配置文件application-jobs.xml,配置自定义Job、任务描述、触发器、调度工厂等

<!--1.做什么事情 注册自定义Job(也就是自己做任务的类) -->
<bean id="jobDemo" class="com.taiping.jobs.MyJob"></bean>

<!--2.与spring进行集成 注册JobDetail,作用是负责通过反射调用指定的Job -->
<bean id="jobDetail"
      class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <!-- 注入目标对象 -->
    <property name="targetObject" ref="jobDemo"/>
    <!-- 注入目标方法(也就是自己做任务类中的方法) -->
    <property name="targetMethod" value="run"/>
</bean>


<!--3.什么时间做    注册一个触发器,指定任务触发的时间(可以注册多个触发器(以下面的为一个单位),就比如定闹钟一样,可以定多个闹钟) -->
<bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <!-- 注入JobDetail -->
    <property name="jobDetail" ref="jobDetail"/>
    <!-- 指定触发的时间,基于Cron表达式 -->
    <property name="cronExpression">
        <value>0/5 * * * * ?</value>
    </property>
</bean>

<!--4. 注册一个统一的调度工厂,通过这个调度工厂调度任务(这个调用触发器,进行调度任务的执行) -->
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <!-- 注入多个触发器(可以调度多个触发器) -->
    <property name="triggers">
        <list>
            <ref bean="myTrigger"/>
          <!--  <ref bean="myTrigger1"/>-->
        </list>
    </property>
</bean>

④.编写main方法进行测试

public class Application {

    public static void main(String[] args) {
        //加载配置文件
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:application-jobs.xml");
        //启动
        applicationContext.start();
    }

⑤:执行main方法,之后任务就开始执行(每隔5秒执行一次,打印时间+执行了的语句)–完成

3.core表达式
①:0/10 * * * * *(每隔10秒从0秒开始执行一次)
②:cron表达式在线生成器—http://cron.qqe2.com/
4.定时任务的应用:
①:定时清理垃圾图片
②:定时发送短信
③:定时生成报表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值