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
相关产品推荐
相关产品推荐

