quartz 动态添加job_Quartz

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。

Quartz API

Quartz API的关键接口是:

  • Scheduler - 与调度程序交互的主要API。
  • Job - 由希望由调度程序执行的组件实现的接口。
  • JobDetail - 用于定义作业的实例。
  • Trigger(即触发器) - 定义执行给定作业的计划的组件。
  • JobBuilder - 用于定义/构建JobDetail实例,用于定义作业的实例。
  • TriggerBuilder - 用于定义/构建触发器实例。

Quartz框架的使用

1、修改pom.xml文件,添加依赖。

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

2、创建测试类

008082c8e01d8ca4875129de4cb478d5.png

51fdb250cdcb6284b6c3ac0c2ebcb73c.png

配置xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:task="http://www.springframework.org/schema/task"
	xmlns:context="http://www.springframework.org/schema/context"
	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
                  http://www.springframework.org/schema/context
                  http://www.springframework.org/schema/context/spring-context.xsd 
                  http://www.springframework.org/schema/task 
		  http://www.springframework.org/schema/task/spring-task.xsd">

	<bean id="job" class="com.ego.test2.Demo"></bean>
	<!--jobDetail -->
	<bean id="jobDetail"
		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject" ref="job"></property>
		<property name="targetMethod" value="execute"></property>
	</bean>

	<!-- trigger -->
	<bean id="trigger"
		class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail" ref="jobDetail"></property>
		<property name="cronExpression" value="*/2 * * * * ?"></property>
	</bean>
 
	<!-- 3、scheduled:调度容器(job,triiger) -->
	<bean id="scheduled"
		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="trigger" />
			</list>
		</property>
	</bean>
</beans>

测试结果

daa9fc02eac9e853d0cf512975e90dc5.png

Quartz与spring整合

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:task="http://www.springframework.org/schema/task"
	xmlns:context="http://www.springframework.org/schema/context"
	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
                  http://www.springframework.org/schema/context
                  http://www.springframework.org/schema/context/spring-context.xsd
                          http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
                  http://www.springframework.org/schema/task 
				http://www.springframework.org/schema/task/spring-task.xsd">
         
        <!--1、job:任务类 -->
	<bean id="job" class="com.sxt.quartz.OrderQuartz"></bean>
	<!--jobDetail -->
	<bean id="jobDetail"
		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject" ref="job"></property>
		<property name="targetMethod" value="closeTimeOutOrder"></property>
	</bean>

	<!-- 2、trigger:触发器 -->
	<bean id="trigger"
		class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail" ref="jobDetail"></property>
		<property name="cronExpression" value="*/10 * * * * ?"></property>
	</bean>

	<!-- 3、scheduled:调度容器(job,triiger) -->
	<bean id="scheduled"
		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="trigger" />
			</list>
		</property>
	</bean>

</beans>

也就是说,当启动程序后,加载spring配置文件,创建任务类对象。在任务类对象中,编写需要定时调用的方法代码。

Corn的使用:

Cron 表达式是一个字符串,分为 6 或 7 个域,每一个域代表一个含义
Cron 有如下两种语法格式:
(1)Seconds Minutes Hours Day Month Week Year
(2)Seconds Minutes Hours Day Month Week

一、结构

corn 从左到右(用空格隔开):秒 分 小时 月份中的日期 月份 星期中的日期 年份

二、cron表达式

eb304eaeabeef9ebed7c19d2f21fea89.png

字段含义:

305d6123d791435879703a0f409bf5b7.png

示例:

184e4d6baa3c508f816791437f50ec15.png
周一至周五的上午10:15触发  				0 15 10 ? * 2-6
表示在每月的1日的凌晨2点调整任务			0 0 2 1 * ?		
朝九晚五工作时间内每半小时 				0 30 9-17 * * ?
每天上午10点,下午2点,4点 				0 0 10,14,16 * * ?
表示每个星期三中午12点 				        0 0 12 ? * 4
在每天下午2点到下午2:59期间的每1分钟触发 		0 */1 14 * * ?
在每天下午2点到下午2:05期间的每1分钟触发 		0 0-5 14 * * ?
在每天下午2点到下午2:55期间的每5分钟触发		0 0-55/5 14 * * ?
在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 0 0-55/5 14,18 * * ?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值