spring整合quartz配置模板

本文介绍如何使用Spring框架集成Quartz实现任务调度,包括配置SchedulerFactoryBean管理QuartzScheduler,设置线程池大小,定义SimpleTriggerBean和CronTriggerBean触发器,并详细解释了触发器的参数设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

    <!-- 
        SchedulerFactoryBean设置了Quartz Scheduler,将其生命周期作为Spring应用程序上下文的一部分进行管理。
        在使用持久性作业时,强烈建议在Spring管理的(或普通的JTA)事务中对Scheduler执行所有操作。否则,数据库锁定将无法正常工作,甚至可能会中断。

        triggers:用FactoryBean创建的Scheduler注册一个Trigger对象列表。
        org.quartz.threadPool.threadCount:设置线程数。
     -->
    <bean id="taskScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="taskSimpleTrigger" />
                <ref bean="taskCronTaskTrigger" />
            </list>
        </property>
        <property name="quartzProperties">
            <props>
                <prop key="org.quartz.threadPool.threadCount">50</prop>
            </props>
        </property>
    </bean>

    <!-- 
        SimpleTriggerBean:在某个时刻开始,然后按照某个时间间隔重复执行。
        SimpleTriggerBean 包括属性:
            * startTime      :开始时间
            * endTime        :结束时间
            * repeatCount    :重复次数,-1 表示不确定重复次数,一直重复
            * repeatInterval :重复间隔时间
            * startDelay     :在第一次开始工作之前设置延迟时间。 给定的毫秒数将被添加到当前时间来计算开始时间。 缺省值是0。  
     -->
    <bean id="taskSimpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
        <property name="jobDetail">
            <bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                <property name="targetObject" ref="helloService" />
                <property name="targetMethod" value="test01" />
            </bean>
        </property>
        <property name="repeatCount" value="-1"/>
        <property name="repeatInterval" value="5000"/>
        <property name="startDelay" value="0"/>
        <property name="startTime" value="2017-12-01 16:44:12"/>
        <property name="endTime"  value="2017-12-01 23:12:00" />  
    </bean>

    <!-- 
        CronTriggerBean:基于 cron 表达式,支持类似日历的重复间隔,而不是单一的时间间隔。
     -->
    <bean id="taskCronTaskTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
            <bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                <property name="targetObject" ref="helloService" />
                <property name="targetMethod" value="test02" />
            </bean>
        </property>
        <property name="cronExpression">
            <value>0/5 * * * * ?</value>
        </property>
    </bean>

    <!-- 
        CustomDateEditor:将注入的日期型的字符串转换为日期
     -->
    <bean id="dateEditor" class="org.springframework.beans.propertyeditors.CustomDateEditor">
        <constructor-arg>
            <bean class="java.text.SimpleDateFormat">
                <constructor-arg value="yyyy-MM-dd HH:mm:ss" />
            </bean>
        </constructor-arg>
        <constructor-arg value="true" />
    </bean>

    <bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
        <property name="customEditors">
            <map>
                <entry key="java.util.Date">
                    <ref local="dateEditor" />
                </entry>
            </map>
        </property>
    </bean>

</beans>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值