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

Spring Boot项目出现Whitelabel错误页,接口请求无响应求助

问题排查与解决

从你的日志和代码来看,核心问题是Spring未扫描到JPA Repository和Controller,同时存在依赖冗余问题,以下是具体排查修复步骤:

1. 修复包结构,确保组件被扫描

日志明确显示:

Finished Spring Data repository scanning in 22 ms. Found 0 JPA repository interfaces.

这说明Spring未识别到EmployeeRepository,同理Controller也大概率未被扫描,原因是主启动类的包范围不包含Repository和Controller。

解决方法:

  • 确认主启动类(如SpringbootBackendApplication)所在包为com.example.springboot,且EmployeeRepository(com.example.springboot.repository)、EmployeeController(com.example.springboot.controller)、Employee实体类(com.example.springboot.model)都在主启动类的同包或子包下。
  • 若无法调整包结构,在主启动类上添加注解手动指定扫描范围:
    @SpringBootApplication(
        scanBasePackages = "com.example.springboot"
    )
    @EnableJpaRepositories(basePackages = "com.example.springboot.repository")
    @EntityScan(basePackages = "com.example.springboot.model")
    public class SpringbootBackendApplication {
        public static void main(String[] args) {
            SpringApplication.run(SpringbootBackendApplication.class, args);
        }
    }
    

2. 移除冗余依赖,避免版本冲突

你的pom.xml中手动引入了spring-web依赖:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>6.0.7</version>
</dependency>

spring-boot-starter-web已经包含该依赖,手动指定版本会与Spring Boot 3.0.5的依赖版本冲突,直接删除这个依赖。

3. 确认ServletInitializer配置(War包部署)

由于你使用war打包,需确保ServletInitializer正确指向主启动类:

public class ServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        // 此处必须指向你的主启动类
        return application.sources(SpringbootBackendApplication.class);
    }
}

若未正确配置,Spring上下文无法初始化,会导致Controller和Repository无法加载。

4. 验证请求路径与日志

你的Tomcat上下文路径为/demo,Controller的请求映射为/api/v1/employees,正确请求路径是:

http://localhost:8080/demo/api/v1/employees

可在application.properties中添加logging.level.web=DEBUG,启动后查看请求日志,确认请求是否被DispatcherServlet接收,以及是否匹配到对应Controller方法。

5. 检查实体类注解

确认Employee实体类添加了@Entity注解,且主键字段添加@Id注解,否则JPA无法识别实体,findAll()方法无法正常工作:

@Entity
@Table(name = "employees")
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    // 其他字段、getter/setter
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:18:07