SpringBoot应用程序一直在重启(重启循环) - spring.devtools

时间:2017-08-22 08:39:51

标签: java spring-boot

我有一个带有嵌入式tomcat的spring boot应用程序,如果在类路径中发生了某些变化,请使用spring-boot-devtools重新启动应用程序。

我的IDE是Spring Tool Suite,我切换了#34;自动构建"因为我认为这可能会在后台更改触发重启的文件

我的问题是,在tomcat和应用程序启动后,它会立即以无限循环重启所有内容:

2017-08-22 10:24:04.309  INFO 9772 --- [  restartedMain] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8055 (http)
2017-08-22 10:24:04.415 DEBUG 9772 --- [  restartedMain] o.s.boot.devtools.restart.Restarter      : Creating new Restarter for thread Thread[main,5,main]
2017-08-22 10:24:04.417 DEBUG 9772 --- [  restartedMain] o.s.boot.devtools.restart.Restarter      : Immediately restarting application
2017-08-22 10:24:04.418 DEBUG 9772 --- [  restartedMain] o.s.boot.devtools.restart.Restarter      : Created RestartClassLoader org.springframework.boot.devtools.restart.classloader.RestartClassLoader@558f3be6
2017-08-22 10:24:04.419 DEBUG 9772 --- [  restartedMain] o.s.boot.devtools.restart.Restarter      : Starting application test.web.MyApplication with URLs 
2017-08-22 10:24:04.421  INFO 9772 --- [  restartedMain] test.web.MyApplication                 : Started MyApplication in 22.347 seconds (JVM running for 24.103)
2017-08-22 10:24:05.524 DEBUG 9772 --- [   File Watcher] o.s.boot.devtools.restart.Restarter      : Restarting application
2017-08-22 10:24:05.527 DEBUG 9772 --- [       Thread-9] o.s.boot.devtools.restart.Restarter      : Stopping application
2017-08-22 10:24:05.527  INFO 9772 --- [       Thread-9] ationConfigEmbeddedWebApplicationContext : Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@68f499a9: startup date [Tue Aug 22 10:23:43 CEST 2017]; root of context hierarchy
2017-08-22 10:24:05.529  INFO 9772 --- [       Thread-9] o.s.j.e.a.AnnotationMBeanExporter        : Unregistering JMX-exposed beans on shutdown
2017-08-22 10:24:05.537  INFO 9772 --- [       Thread-9] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2017-08-22 10:24:05.539  INFO 9772 --- [       Thread-9] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000227: Running hbm2ddl schema export
2017-08-22 10:24:05.567  INFO 9772 --- [       Thread-9] org.hibernate.tool.hbm2ddl.SchemaExport  : HHH000230: Schema export complete
2017-08-22 10:24:05.864  INFO 9772 --- [ost-startStop-2] org.apache.wicket.Application            : [wicket-filter] destroy: DevUtils DebugBar Initializer
...
2017-08-22 10:44:04.309  INFO 9772 --- [  restartedMain] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8055 (http)
...
2017-08-22 10:44:04.421  INFO 9772 --- [  restartedMain] test.web.MyApplication                 : Started MyApplication in 22.347 seconds (JVM running for 24.103)
2017-08-22 10:44:05.527 DEBUG 9772 --- [       Thread-9] o.s.boot.devtools.restart.Restarter      : Stopping application

Workaroud :我知道spring.devtools.restart.enabled = false我可以阻止此行为但当然我希望重新启动,如果它真的有必要

问题:

  • 如何找出哪个文件更改会触发重启?
  • 有人有过类似的问题吗?

3 个答案:

答案 0 :(得分:10)

好的,在应用程序启动后的几秒钟后,我发现问题与我们的应用程序通过Spring Boot DevTools重新启动有关。

日志文件文件夹由DevTools扫描,因为应用程序在启动后将日志写入此文件夹,每次启动都会触发通过DevTools重新加载整个应用程序。

解决方案是从application.yml中的监控中排除日志文件夹:

spring:
  devtools:
    restart:
      exclude: logs/**

如果你使用的是普通属性文件,它只是相同但中间有(。)点。另请参阅http://www.logicbig.com/tutorials/spring-framework/spring-boot/restart-exclude/以供参考。

答案 1 :(得分:0)

我已经添加了application.properties,然后工作正常。 TQ

spring.devtools.restart.additional-exclude=logs/**

答案 2 :(得分:0)

在IntelliJ Idea IDE中

Edit Run/Debug Configurations... ->选择您的Spring Boot服务项(在左侧面板上)->设置了“运行应用程序更新策略”:

  • 关于“更新”操作:不执行任何操作
  • 关于“停用框架”:不执行任何操作