You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Quartz定时任务失效求助:无法每2分钟打印Hello

问题排查与修复:Spring Quartz定时任务未执行

核心问题分析

  • Spring容器未启动:当前App.java是普通Java主类,执行完打印语句后直接退出,完全没有初始化Spring上下文,导致Quartz的配置、Job和Trigger都未被加载。
  • Trigger重复规则错误:quartz-config.xml中repeatCount设为0,表示仅执行1次,而非预期的无限重复。
  • 配置扫描逻辑缺失:未确保Spring能扫描到QuartzSchedulerConfig配置类,无法加载调度器Bean。

修复步骤与代码调整

1. 改造主类,启动Spring容器

将App.java改为Spring Boot启动类(若使用普通Spring框架,可改用AnnotationConfigApplicationContext手动加载配置):

package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

注:需确保Maven依赖中添加Spring Boot及Quartz相关 starter 依赖

2. 修正Trigger的重复次数配置

修改quartz-config.xml中trigger1的repeatCount属性值为-1(对应SimpleTrigger.REPEAT_INDEFINITELY,表示无限重复):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="job1" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
        <property name="jobClass" value="com.example.PracticeApplication" />
        <property name="durability" value="true" />
    </bean>
    
    <bean id="trigger1" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
        <property name="jobDetail" ref="job1" />
        <property name="repeatInterval" value="120000" /><!-- 每2分钟重复 -->
        <property name="repeatCount" value="-1" /><!-- 无限重复 -->
    </bean>
</beans>

3. 确保配置类被Spring扫描

QuartzSchedulerConfig上的@Configuration注解已正确添加,结合@SpringBootApplication的自动扫描规则(默认扫描主类所在包及子包),该配置类会被自动加载,无需额外调整。

4. 验证依赖完整性

确保Maven的pom.xml中包含Quartz与Spring整合的必要依赖,示例依赖如下:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-quartz</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
</dependencies>

验证效果

启动改造后的App类,Spring容器会初始化Quartz调度器,触发每2分钟执行一次的定时任务,控制台会每隔2分钟输出Hello。

内容的提问来源于stack exchange,提问作者SRIJAN GIRDHAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 02:28:26