欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Quartz

程序员文章站 2024-02-27 13:53:51
...

什么是Quartz

一种任务日程管理系统,用来运行复杂日程表
功能类似定时器

Quartz做了什么

在提前设置好的日期或时间间隔到达时开始、暂停或停止执行对应的任务

为什么要用Quartz

  • 可用于活动倒计时
  • 使用场景:单独使用 或 web项目中使用

Quartz实现原理

四个核心接口:核心调度器scheduler任务job任务描述jobDetail触发器trigger

  1. 定义job(相当于接口)和jobDetail(相当于实现类)
  2. 定义任务对应的触发器trigger
  3. 将三者注册到核心调度器scheduler中
  4. scheduler根据trigger来执行job

Quartz在maven项目中的使用

  • 添加相关依赖

    <dependency>
    	<groupId>org.quartz-scheduler</groupId>
    	<artifactId>quartz</artifactId>
    	<version>2.2.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>4.1.3.RELEASE</version>
    </dependency>
    
  • 创建一个类作为job的实现方法

  • 配置job到spring容器

    <bean id="自定义job的id" class="类的全路径"></bean>
    
  • 给job配置JobDetail

    <bean id="自定义JobDetail的id" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    	<!--指定该jobdetail描述的job-->
    	<property name="targetObject">
    		<ref bean="自定义job的id" />
    	</property>
    	<!-- 指定需要执行的job中的方法 -->
    	<property name="targetMethod">  
    		<value>要执行的方法名称</value>
    	</property>
    </bean>
    
  • 配置调度触发器

    <!-- 配置调度触发器 -->
    <bean id="自定义触发器的id" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean ">
    	<property name="jobDetail" ref="自定义JobDetail的id"></property>
    	<!--2秒钟执行以下execute这个方法0/2这是一个表达式 -->
    	<property name="cronExpression" value="配置触发时机的表达式"></property>
    </bean>
    
  • 配置调度工厂

    <!-- 配置调度工厂,一个项目中有多个定时器 -->
    <bean id="SpringJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    	<property name="triggers">
    		<list>
    			<ref bean="自定义触发器的id" />
    		</list>
    	</property>
    </bean>
    
相关标签: 工程