Quartz 任务调度

Quartz框架的介绍

Quartz是一个完全由Java编写的开源任务调度的框架,通过触发器设置作业定时运行规则,控制作业的运行时间。其中quartz集群通过故障切换和负载平衡的功能,能给调度器带来高可用性和伸缩性。主要用来执行定时任务,如:定时发送信息、定时生成报表等等。

1、Quartz使用

步骤:

  1. 添加依赖

  2. 编写任务类(你要什么?)

  3. 编写Spring整合Quartz配置

  4. 启动服务

实现:

1、使用Spring整合Quartz:

 <!--定时任务 -->  
    <dependency> 
      <groupId>org.quartz-scheduler</groupId>  
      <artifactId>quartz</artifactId>  
      <version>2.2.3</version> 
    </dependency>  

2、编写任务类

package cn.it.web.task;

import java.text.SimpleDateFormat;
import java.util.Date;

//自定义的一个任务类, 任务类任务是输出当前的系统时间
public class MyTask {

    public void showtime(){
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("当前的时间:"+ dateFormat.format(new Date()));
    }
}

3、在web.xml配置启动spirng

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">

	<!--启动spring-->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:spring/applicationContext-*.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
</web-app>

4、编写Spring整合Quartz配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--1. 定义任务的详情(你要干什么)-->
    <!--创建任务类对象-->
    <bean id="myTask" class="cn.itcast.web.task.MyTask"/>
    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!--任务对象-->
        <property name="targetObject"  ref="myTask"/>
        <!--任务的方法-->
        <property name="targetMethod" value="showTime"/>
    </bean>


    <!--2. 定义触发器(什么时间出发上面的事情)-->
    <bean id="trigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean" >
        <!--任务详情-->
        <property name="jobDetail" ref="jobDetail"/>
        <!--时间表达式 : 秒  分 时 日 月 周 [年]
                注意:
                        1.周与日是冲突的,只能写一个。   1(日)  1  1(周) 2021 , 不能指定的值使用?表示
                        2.年是可以省略不写的。
            需求: 每两秒执行一次当前系统时间
        -->
        <property name="cronExpression" value="0/2 * * * * ? *"/>
    </bean>


    <!--3. 把触发器交给任务调度工厂-->
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <array>
                <ref bean="trigger"/>
            </array>
        </property>
    </bean>


</beans>

5、启动服务

2、Quartz 任务调度表达式语法

语法

特殊符号的含义

 

特殊字符意义
*匹配所有的值。如:*在分钟的字段域里表示 每分钟 每
?只在日期域和星期域中使用。它被用来指定“非明确的值”
-指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”
,指定几个可选值。如:“MON,WED,FRI”在星期域里表示“星期一、星期三、星期五”
/指定增量。如:“0/15”在秒域意思是每分钟的0,15,30和45秒。 “5/15”在分钟域表示每小时的5,20,35和50。

Quartz Cron 表达式支持到七个域

日与周,必须有一个问号。否则就会有冲突。

月份和星期的名称是不区分大小写的。FRI 和 fri 是一样的。

举例

表达式意义
"0 0 12 * *?" 每天中午12点触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 0/5 14,18* * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * *? " 在每天下午2点到下午2:05期间的每1分钟触

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值