2019-05-29
最近一直在使用intellij + springboot开发。我使用的是intellij社区版。
有个问题一直困惑着我:当我在intellij里面,使用springboot:run启动项目后(debug模式启动,没有禁用断点),访问服务时,总是不会进入断点, 并且有时候在intellij里面关闭应用后,应用的进程并没有关闭,还可以继续访问。而根据我添加的日志来看,断点所在的代码已经执行。我一直以为是intellij的bug。
问题原因:spring-boot-devtools将spring-boot-maven-plugin的默认的fork=fasle修改为true,导致应用以独立进程的方式启动,从而在intellij中点击停止应用后,进程依然在运行。
解决方法:
方法一:保留spring-boot-devtools,在spring-boot-maven-plugin中设置fork为false。如下:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>false</fork>
</configuration>
</plugin>
</plugins>
</build>
方法二:删除spring-boot-devtools,无需显式设置fork=false
Tips: fork=true时,无法进入断点,并且有时在intellij中关闭应用后,进程依然在运行;fork=false,可以进入断点,没有独立的应用进程被启动。