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

Spring Boot项目JPA EntityManagerFactory意外关闭问题求助

问题原因分析

从日志里的c.a.rest.SpringBootRestApplicationTests可以看出,你当前启动的是测试类,而非Spring Boot的主应用启动类。测试类执行完测试逻辑后,会自动关闭Spring上下文,连带关闭JPA EntityManagerFactory和数据库连接池,导致应用进程直接退出(exit code 0),自然无法用Postman访问接口。

解决方案

1. 运行正确的主启动类

找到项目中带有@SpringBootApplication注解的主类(通常命名为SpringBootRestApplication),运行这个类而非测试类。主启动类启动后会维持Web容器运行,不会自动关闭上下文。

示例主启动类代码:

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

2. 确认Web依赖是否正确引入

检查pom.xml(Maven)或build.gradle(Gradle),确保引入spring-boot-starter-web依赖——这是启动Web容器的必要条件:
Maven配置:

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

Gradle配置:

implementation 'org.springframework.boot:spring-boot-starter-web'

如果缺少该依赖,即使运行主启动类,应用也会因无Web容器需要维持而立即关闭。

3. 若需通过测试类临时启动应用(可选)

如果确实需要通过测试类启动应用供Postman测试,可以修改测试类,设置Web环境并阻止上下文自动关闭:

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class SpringBootRestApplicationTests {

    @Test
    public void keepApplicationRunning() throws InterruptedException {
        // 让测试线程保持运行,不自动关闭上下文
        Thread.sleep(Long.MAX_VALUE);
    }
}

但这种方式仅为临时方案,日常开发或测试仍推荐运行主启动类。

额外检查

你的application.properties配置无明显问题,正常的数据库连接与Hibernate设置,只要应用正常启动,就能建立数据库连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:36:08