spring集成quartz scheduler

时间:2024-01-18 22:57:32

创建项目

有两种创建quart配置作业

1.使用MethodInvokingJobDetailFactoryBean 

Quartz Scheduler 配置作业(MethodInvokingJobDetailFactoryBean 

1.这个bean有两个属性分别是

targetObject 指向调用方法的bean,自己定义

targetMethod这个bean的方法

Quartz Scheduler 配置作业(JobDetailFactoryBean)

1.实现定义一个类,继承QuartzJobBean,写一个bean,这个bean属于业务方法

然后把业务方法bean申明成成员属性,重写executeInternal业务方法,和bean的方法,this.bean的方法都可以执行

jobDataMap 在继承QuartzJobBean的类里不是申明了bean业务吗,可以多个在配置xml时是一个map,弄进去,就管

jobClass 把继承QuartzJobBean的全了名写上

durability true或false

配置 Quartz 调度时要使用到的触发器(SimpleTriggerFactoryBean)

这个bean的属性

jobDetail 注入 (MethodInvokingJobDetailFactoryBean )

startDelay 设置触发时间 (毫秒)

repeatInterval 频率 (毫秒)

配置创建定配置 Quartz 调度器的 SchedulerFactoryBean

SchedulerFactoryBean 将 jobDetails 和 triggers 整合在一起以配置 Quartz 调度器。

这个bean的属性

jobDetails (将所有的Quartz Scheduler 配置作业的bean都配置进来,里面是一个list属性集合)

triggers(将所有配置 Quartz 调度时要使用到的触发器 的bean整合进去,里面是一个list集合

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
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-4.2.xsd"> <context:component-scan base-package="com.huawei.entity" /> <!-- 1.配置quartz 作用调用业务方法-->
<bean id="simpleJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="myBean" />
<property name="targetMethod" value="printMessage" />
</bean> <!-- 配置多少次调用业务方法 有规律的配置,省略-->
<bean id="simpleTrigger"
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="simpleJobDetail" />
<property name="startDelay" value="1000" />
<property name="repeatInterval" value="2000" />
</bean> <!-- 将所有配置业务方法和触发时机的bean组成集合 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="jobDetails">
<list>
<ref bean="simpleJobDetail" />
</list>
</property>
<property name="triggers">
<list>
<ref bean="simpleTrigger" />
</list>
</property>
</bean>
</beans>
package com.huawei.entity;

import org.springframework.stereotype.Component;

@Component
public class MyBean {
public void printMessage() {
System.out.println("I am MyBean. I am called by MethodInvokingJobDetailFactoryBean using SimpleTriggerFactoryBean");
}
}