IntelliJ中Spring Boot REST服务运行后停止,问题排查求助
缺少Spring Boot Web Starter依赖
REST应用需要嵌入式Web容器(如Tomcat)才能保持运行,若未引入spring-boot-starter-web,应用启动后会因为没有需要持续运行的组件而直接退出。
Maven依赖示例:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>Gradle依赖示例:
implementation 'org.springframework.boot:spring-boot-starter-web'启动类配置错误
启动类必须满足两个核心条件:- 标注
@SpringBootApplication注解(整合了@ComponentScan、@EnableAutoConfiguration等核心配置) - 包含标准的main方法作为应用入口
正确的启动类示例:
@SpringBootApplication public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } }另外注意启动类的包路径,要确保它能覆盖业务类所在的包层级,否则Spring无法扫描到Controller、Service等组件,也可能导致应用无业务逻辑可执行而退出。
- 标注
错误配置了Web应用类型
如果在application.properties或application.yml中设置了spring.main.web-application-type=NONE,应用会以非Web模式启动,完成初始化后直接停止。
解决方式:删除该配置项,或者根据你的应用类型设置为SERVLET(传统Servlet栈)或REACTIVE(响应式Web栈)。依赖冲突或容器依赖缺失
比如手动排除了Tomcat依赖但未引入其他Web容器(如Jetty、Undertow),或者依赖版本不兼容导致容器无法正常启动。
可以通过以下命令查看依赖树排查问题:
Maven:mvn dependency:tree
Gradle:gradle dependencies错误排除了Web自动配置类
如果启动类上的@SpringBootApplication或@EnableAutoConfiguration注解中,错误排除了WebMvcAutoConfiguration、TomcatServletWebServerFactoryAutoConfiguration等核心Web自动配置类,会导致Web容器无法初始化,应用启动后退出。检查启动类注解,移除不必要的exclude配置即可。
内容的提问来源于stack exchange,提问作者Nisanio

