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

SpringBootApplication无法识别REST Controller问题求助

Spring Boot REST Controller 无法被扫描导致404问题求助

我正在构建一个带CRUD功能的Spring REST API,用于操作MongoDB中的书籍数据,项目结构如下:

  • BackendBookLibraryApplication.java 位于 main > java > com.lena.backendbooklibrary
  • BookController.java 位于 main > java > com.lena.backendbooklibrary.controllers

主启动类代码:

package com.lena.backendbooklibrary;

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

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

BookController代码:

package com.lena.backendbooklibrary.controllers;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/v1/books")
public class BookController {
    @GetMapping
    public String getAllBooks() {
        return "All books";
    }
}

启动应用后,访问 http://localhost:8080/api/v1/books 始终返回404错误,控制台没有任何报错信息。按照Spring Boot的规则,控制器在主启动类的子包下应该会被自动扫描到,但实际情况并非如此。

我已经尝试了以下排查操作:

  • 在BackendBookLibraryApplication类上直接添加@RestController注解和请求映射,实现GET方法:此方式可行,访问对应路径能正常返回内容
    修改后的主类代码:
    package com.lena.backendbooklibrary;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @SpringBootApplication
    @RestController
    @RequestMapping("/api/v1/books")
    public class BackendBookLibraryApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(BackendBookLibraryApplication.class, args);
        }
    
        @GetMapping
        public String getAllBooks() {
            System.out.println("BackendBookLibraryApplication: getAllBooks()");
            return "All books";
        }
    
    }
    
  • 将BookController移至与主启动类相同的包com.lena.backendbooklibrary下:问题依旧,还是返回404
  • 在主启动类上额外添加@ComponentScan(basePackageClasses = BookController.class)注解(原本清楚@SpringBootApplication已经包含组件扫描功能):无效

恳请Spring技术相关的专家帮忙分析问题原因,谢谢!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:42:47