spring+quartz实现定时任务

本文介绍如何使用Spring框架整合Quartz实现定时任务。主要包括配置Scheduler、Trigger、JobDetail及业务类TestJob等步骤,并提供了关键代码示例。

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

以下内容来自网络:

一:配置schedule

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
       <property name="triggers">  
           <list>  
              <ref bean="testTrigger"/>  
           </list>  
       </property>  
       <property name="autoStartup" value="true"/>  
</bean>  
注意:schedule包含一个triggers列表

二:配置trigger

<bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
       <property name="jobDetail" ref="testJobDetail"/>  
       <property name="cronExpression" value="0 15 15 ? * 3#2"/><!-- 每月第二周的周一15:15 -->  
</bean>

三:配置jobDetail

<bean id="testJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">   
        <property name="targetObject" ref="testJob"/>  
        <property name="targetMethod" value="execute"/>  
        <property name="concurrent" value="false"/>
        <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->  
</bean>

四:配置业务处理类也就是本例中的targetObject,即ref属性指向的testJob(bean)

<bean id="testJob" class="com.cjm.web.service.quartz.TestJob"/>
五:业务类的代码

public class TestJob {  
    public void execute(){  
        try{  
              //.......
         }catch(Exception ex){  
             ex.printStackTrace();  
         }  
     }  
}  

说明:业务类不需要继承任何父类,也不需要实现任何接口,它只是一个pojo(普通java)类

在spring配置和quartz集成内容时,有两点需要注意:

1)在<beans>中不能设置default-lazy-init=true,否则定时任务不触发,

default-lazy-init默认的设置是false

2)在<beans>中不能设置default-autowire=byName的属性

否则后台会报org.springframework.beans.factory.BeanCreationException异常

所以必须通过ref明确引入



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值