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

Spring Boot应用异常排查:Bean未找到与404白标错误

问题1:仓库Bean未找到的解决方案

首先咱们先理清为啥Spring找不到你的NotesRepository Bean。你给仓库接口加了@Repository注解,但Spring Data MongoDB的仓库接口需要额外的注解触发扫描——@EnableMongoRepositories,这是关键遗漏点。

你当前主类只加了@SpringBootApplication和自定义的@ComponentScan,但@ComponentScan只会扫描带@Component、@Service、@Controller这类注解的普通类,不会识别MongoRepository接口。具体解决步骤:

  • 删掉主类上自定义的@ComponentScan,因为@SpringBootApplication已经默认包含了对主类所在包及其子包的组件扫描,你的所有类都在com.demo的子包下,完全不需要额外配置。
  • 在主类上添加@EnableMongoRepositories注解,如果NotesRepository在com.demo.models包下,直接加就行(默认扫描主类所在包下的仓库),也可以明确指定包路径:
@SpringBootApplication
@EnableMongoRepositories(basePackages = "com.demo.models")
public class MainJavaApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainJavaApplication.class, args);
    }
}

这样Spring就能自动识别你的NotesRepository并创建对应的Bean了。

另外你提到官方提示的是learnk8s.io.demo.models,这应该是复制时的笔误,以你实际的com.demo.models包路径为准即可。

问题2:移包后出现404页面的排查步骤

应用启动成功但访问localhost:8080返回404,说明Spring能找到你的控制器,但无法匹配到返回的index视图,咱们从这几个方向排查:

1. 检查模板文件位置(若用Thymeleaf等模板引擎)

你的控制器返回"index",如果用的是Thymeleaf(Spring Boot默认推荐的模板引擎),必须把index.html放在**src/main/resources/templates**目录下。如果文件放错位置(比如static目录或项目根目录),Spring会找不到视图从而返回404。

2. 确认模板引擎依赖是否存在

如果用Thymeleaf,检查你的pom.xml(Maven)或build.gradle(Gradle)里有没有引入对应的starter依赖:
Maven示例:

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

没有这个依赖的话,Spring无法解析模板文件,哪怕位置正确也会返回404。

3. 验证控制器映射是否生效

你控制器里的@GetMapping("/")写法是对的,可以查看启动日志,确认有没有类似Mapped "{[/],methods=[GET]}"的日志,这说明该映射已被Spring成功注册。如果没有这条日志,才需要检查控制器是否被扫描到,但你说应用启动成功,大概率不是这个问题。

4. 若不用模板引擎,检查静态资源位置

如果直接用静态HTML,不需要模板引擎,就要把index.html放在**src/main/resources/static**或src/main/resources/public目录下,Spring会自动把这个路径映射到/访问地址。

关于你的疑惑点
  • 完全正确!如果所有类都在主应用类所在包的子包下,根本不需要额外的@ComponentScan,@SpringBootApplication已经帮你完成了组件扫描工作。你之前加的自定义@ComponentScan不仅多余,还可能因为配置细节导致潜在问题,删掉更简洁。
  • 你之前加了@ComponentScan包含com.demo.models但无效,核心原因就是缺少@EnableMongoRepositories——@ComponentScan不负责处理Spring Data的仓库接口,必须用专门的注解触发扫描。

按照上面的步骤调整后,应该就能解决这两个问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:27:44