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

Spring Boot 2.0.1.RELEASE版应用启动后立即关闭问题求助

解决Spring Boot 2.0.1.RELEASE启动后立即关闭的问题

我来帮你分析这个问题——你遇到的情况在Spring Boot版本从1.x升级到2.x时很常见,虽然你已经引入了spring-boot-starter-web,但还是有几个容易被忽略的关键点:

可能的原因及对应解决方案

1. 启动类的配置或位置有误

Spring Boot 2.x对组件扫描的规则和1.x保持一致,但如果你的启动类位置不对,或者手动修改了自动配置范围,可能会导致web相关的自动配置类没被加载。比如启动类放在了子包下,或者自定义了@ComponentScan的扫描路径,漏掉了web自动配置的包。

解决办法:

  • 把启动类放到项目的根包下(比如你的项目基础包是com.myapp.demo,启动类DemoApplication就直接放在这个包下),让@SpringBootApplication自动扫描所有子包的组件。
  • 移除不必要的@ComponentScan或@EnableAutoConfiguration自定义配置,交给@SpringBootApplication默认处理即可。

2. 不小心禁用了Web应用模式

Spring Boot 2.x新增了spring.main.web-application-type属性,用来指定应用的运行类型。如果你的配置文件(application.properties/application.yml)里不小心设置了:

spring.main.web-application-type=NONE

应用会以非Web模式启动,自然会在初始化完成后立即关闭。

解决办法:

  • 检查配置文件,删除这个属性,或者明确设置为Servlet模式:
spring.main.web-application-type=SERVLET

这样就能强制启动内嵌Tomcat容器了。

3. 依赖冲突或缺失

Spring Boot 2.x升级了大量底层依赖(比如Spring Framework从4.x升到5.x,Tomcat版本也同步升级),如果你的pom.xml里有其他自定义依赖,可能和spring-boot-starter-web的依赖产生冲突,导致Tomcat容器无法正常初始化。

解决办法:

  • 运行mvn dependency:tree命令生成依赖树,检查是否有spring-boot-starter-tomcat被意外排除,或者存在版本不一致的情况。
  • 确保没有手动添加排除spring-boot-starter-tomcat的配置,它是spring-boot-starter-web默认自带的内嵌容器依赖。

4. 通过启动日志定位问题

如果上面的方法都没解决,建议开启DEBUG级别的启动日志,查看自动配置的细节,比如哪些Web相关的配置类没被加载,或者加载失败的原因。

操作步骤:

  • 在application.properties中添加日志配置:
logging.level.org.springframework.boot.autoconfigure=DEBUG

启动应用后,重点查看WebMvcAutoConfiguration、TomcatServletWebServerFactoryAutoConfiguration这些类的加载日志,就能找到问题根源。

为什么1.4.2.RELEASE版本正常?

因为Spring Boot 1.x中没有web-application-type这个属性,只要引入spring-boot-starter-web就会默认启动Tomcat,自动配置的逻辑也相对宽松,所以不会出现这类问题。而2.x对配置和依赖管理的严谨性更高,才会出现这种版本差异导致的启动问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:26:10