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

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

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

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

2017-08-22 10:24:04.309 INFO 9772 --- [ restartedMain] sbcetTomcatEmbeddedServletContainer : Tomcat started on port(s): 8055 (http) 2017-08-22 10:24:04.415 DEBUG 9772 --- [ restartedMain] osboot.devtools.restart.Restarter : Creating new Restarter for thread Thread[main,5,main] 2017-08-22 10:24:04.417 DEBUG 9772 --- [ restartedMain] osboot.devtools.restart.Restarter : Immediately restarting application 2017-08-22 10:24:04.418 DEBUG 9772 --- [ restartedMain] osboot.devtools.restart.Restarter : Created RestartClassLoader org.springframework.boot.devtools.restart.classloader.RestartClassLoader@558f3be6 2017-08-22 10:24:04.419 DEBUG 9772 --- [ restartedMain] osboot.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] osboot.devtools.restart.Restarter : Restarting application 2017-08-22 10:24:05.527 DEBUG 9772 --- [ Thread-9] osboot.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] osjeaAnnotationMBeanExporter : 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] sbcetTomcatEmbeddedServletContainer : 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] osboot.devtools.restart.Restarter : Stopping application 

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

题:

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

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

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

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

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

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