我的应用场景是在项目启动之前做一些验证,如果验证通过则正常启动项目,否则不允许启动。
代码如下:
public class CMSApplication {
public static void main(String[] args) throws Exception{
VerifyBeforeStartUp.verifyBeforeStartUp();
SpringApplication.run(CMSApplication.class,args);
}
但是我发现VerifyBeforeStartUp.verifyBeforeStartUp();这块被执行了两次。而且在控制台上显示的第二次的线程名为restartedMain
2017-12-28 18:21:08: INFO [main] c.e.c.c.l .java:29 - oswindows 7
2017-12-28 18:21:08: INFO [main] c.e.c.c.l .java:32 - This is windows
2017-12-28 18:21:09: INFO [restartedMain] c.e.c.c.l.v.VerifyBeforeStartUp
2017-12-28 18:21:09: INFO [restartedMain] c.e.c.c.l.u.SystemTool SystemTool.java:29 - oswindows 7
后来查询资料后发现是热部署的插件引起的,多以去掉以下依赖就OK了。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
说明:必须去掉对于依赖才能解决重启一次问题。使用下面的配置是无法解决这个问题的。
spring.devtools.restart.enabled=false