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

SpringBoot中CommandLineRunner未执行问题求助

问题解决:SpringBoot中CommandLineRunner的run方法未执行

问题原因

SpringBoot的@SpringBootApplication注解默认包含@ComponentScan功能,仅会扫描主类所在包及其子包中的组件。你的主类位于com.jpa.tutorialjpa包,而CourseCommandLineRunner在course包,不在默认扫描范围内,导致Spring无法识别该@Component,因此不会执行其run方法。

解决方案

以下三种方式任选其一即可:

1. 调整包结构

将CourseCommandLineRunner类移动到主类所在包或其子包下,例如com.jpa.tutorialjpa.course,这样默认组件扫描就能覆盖到该类。

2. 指定扫描包路径

在主类的@SpringBootApplication注解中添加scanBasePackages属性,明确指定需要扫描的包:

package com.jpa.tutorialjpa;

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

@SpringBootApplication(scanBasePackages = {"com.jpa.tutorialjpa", "course"})
public class TutorialJpaApplication{

    public static void main(String[] args) {
        SpringApplication.run(TutorialJpaApplication.class, args);
        System.out.println("======LOADED=");
    }

}

3. 指定扫描的类所在包

通过scanBasePackageClasses属性,直接指定需要扫描的类(Spring会扫描这些类所在的包):

package com.jpa.tutorialjpa;

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

@SpringBootApplication(scanBasePackageClasses = {TutorialJpaApplication.class, CourseCommandLineRunner.class})
public class TutorialJpaApplication{

    public static void main(String[] args) {
        SpringApplication.run(TutorialJpaApplication.class, args);
        System.out.println("======LOADED=");
    }

}

修改完成后重启项目,即可看到CourseCommandLineRunner中的打印语句正常输出。

内容的提问来源于stack exchange,提问作者aayush mohanka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:50:17