spring 项目 接入Quartz 实现定时任务

spring 项目 接入Quartz 实现定时任务

abdulla1992
2021-11-02 / 0 评论 / 198 阅读 / 正在检测是否收录...

因为项目框架比较老,因此没办法像spring boot 或者maven项目一样快捷引入,因此百度了些方法整理了下。

开发工具 :idea

1、导入quartz包, 右键jar包,选择 Add as library
quartz引入.png

2、新建spring-quartz.xml文件
xml.png

3、xml文件内容

<?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">

    <!--注入任务处理类bean  -->
    <bean id="quartzTask" class="{yourPackageName}.service.quartz.GbSyncQuartz">

    </bean>

    <!-- 2.任务触发器详细信息bean -->
    <bean id="myJobDetail2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!-- 设置任务执行对象 -->
        <property name="targetObject" ref="quartzTask"></property>
        <!-- 设置任务执行对象中对应的执行方法 -->
        <property name="targetMethod" value="doSync"></property>
        <!-- 设置任务是否可并发执行,默认为不并发 -->
        <property name="concurrent" value="false"></property>
    </bean>

    <!-- 2.任务触发器 -->
    <bean id="cronTrigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <!-- 设置任务详细信息 -->
        <property name="jobDetail" ref="myJobDetail2"></property>
        <!-- 设置quartz任务执行表达式 ,每隔三秒执行一次任务-->
        <property name="cronExpression" value="0/50 * * * * ?"></property>
    </bean>

    <!-- 设置触发器调度工厂 -->
    <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <!-- 触发器调度工厂调度简单触发器 -->
                <ref bean="cronTrigger2"/>
                <!--<rel bean=""> 多个触发器可以这样配置-->
            </list>
        </property>
    </bean>

</beans>

3、加载配置文件,在spring-config*.xml中引入spring-quartz.xml文件

<import resource="classpath:{路径}/spring-quartz.xml"/>

4、启动Tomcat项目,可以看到日志

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class GbSyncQuartz {
    private Logger logger = LoggerFactory.getLogger(GbSyncQuartz.class);

    public void doSync() {
        logger.info("同步调度正在执行......");
    }
}
0

评论 (0)

取消