Spring Boot应用启动后无报错立即关闭 求助排查
Spring Boot应用启动后无报错自动关闭的排查思路
问题背景
刚创建了包含通用model/service/dto/controller/repository的Spring Boot应用,首次连接MySQL测试时,应用启动几秒后无报错立即关闭,Maven构建成功,尝试调整Tomcat依赖、增删spring-boot-starter-web等方案无效。
运行日志
:: Spring Boot :: (v3.2.0) 2023-12-01T00:48:31.899-06:00 INFO 1456 --- [ main] com.example.backend.BackendApplication : Starting BackendApplication using Java 19.0.2 with PID 1456 (C:\Users\marie\Downloads\backend\backend\target\classes started by marie in C:\Users\marie\Downloads\backend) 2023-12-01T00:48:31.947-06:00 INFO 1456 --- [ main] com.example.backend.BackendApplication : No active profile set, falling back to 1 default profile: "default" 2023-12-01T00:48:32.998-06:00 INFO 1456 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2023-12-01T00:48:33.607-06:00 INFO 1456 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 542 ms. Found 1 JPA repository interface. 2023-12-01T00:48:35.159-06:00 INFO 1456 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2023-12-01T00:48:35.354-06:00 INFO 1456 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.3.1.Final 2023-12-01T00:48:35.457-06:00 INFO 1456 --- [ main] o.h.c.internal.RegionFactoryInitiator : HHH000026: Second-level cache disabled 2023-12-01T00:48:36.183-06:00 INFO 1456 --- [ main] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer 2023-12-01T00:48:36.238-06:00 INFO 1456 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2023-12-01T00:48:36.871-06:00 INFO 1456 --- [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@30aec673 2023-12-01T00:48:36.874-06:00 INFO 1456 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2023-12-01T00:48:36.951-06:00 WARN 1456 --- [ main] org.hibernate.orm.deprecation : HHH90000025: MySQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default) 2023-12-01T00:48:38.198-06:00 INFO 1456 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration) 2023-12-01T00:48:38.270-06:00 INFO 1456 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2023-12-01T00:48:38.829-06:00 INFO 1456 --- [ main] com.example.backend.BackendApplication : Started BackendApplication in 8.444 seconds (process running for 9.385) 2023-12-01T00:48:38.842-06:00 INFO 1456 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2023-12-01T00:48:38.846-06:00 INFO 1456 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2023-12-01T00:48:38.869-06:00 INFO 1456 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed. Process finished with exit code 0
pom.xml文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>backend</artifactId> <version>0.0.1-SNAPSHOT</version> <name>backend</name> <description>Backend</description> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>compile</scope> </dependency> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>6.1.1</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> </configuration> </plugin> </plugins> </build> </project>
BackendApplication启动类
package com.example.backend; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class BackendApplication { public static void main(String[] args) { SpringApplication.run(BackendApplication.class, args); } }
排查思路
- 清理冲突依赖:移除pom.xml中单独的
spring-web依赖(spring-boot-starter-web已包含适配版本),同时移除单独声明的spring-boot-starter-tomcat依赖(spring-boot-starter-web内置该依赖),避免版本冲突或重复加载导致容器初始化异常。 - 验证Web容器启动状态:重新启动应用,检查日志中是否出现Tomcat初始化相关日志(如
Tomcat initialized with port(s): 8080 (http)),确认Web容器是否正常启动。 - 检查组件扫描范围:确保
@SpringBootApplication的扫描范围覆盖所有业务组件,若组件不在启动类所在包或子包下,添加scanBasePackages属性指定扫描路径,例如@SpringBootApplication(scanBasePackages = "com.example")。 - 排查JPA实体配置:检查所有model类的JPA注解是否正确(如是否添加
@Entity、主键@Id等),实体配置错误可能导致应用初始化完成后无持续运行的触发点。 - 确认Web应用类型配置:检查
application.properties/application.yml中是否存在spring.main.web-application-type=none配置,如有则删除,确保应用被识别为Web应用。
内容的提问来源于stack exchange,提问作者clara bella
相关产品推荐
相关产品推荐

