从智能执行文件IO时,Spring引导会自动重新启动

问题描述:

我有一个非常奇怪的问题,即当我以编程方式将文件保存到资源文件夹时,我的Spring应用程序将结束所有线程并重新启动。奇怪的是,如果我打包打包并部署到tomcat服务器上,问题似乎消失了,但是当我从IntelliJ运行它时,问题就在那里。更重要的是,我希望这个文件写入在Spring启动后立即发生,导致应用程序无限循环启动和重新启动。我检查build文件夹中的资源文件夹,看到每次春季开始时文件都会保存,但应用程序似乎在之后立即崩溃。从智能执行文件IO时,Spring引导会自动重新启动

下面是我用写文件的代码:

FileOutputStream fos = new FileOutputStream(
     this.getClass().getClassLoader().getResource("processes/").getPath() + "/filename.xml" 
); 
fos.write(processXML); 
fos.close(); 
+0

你尝试将文件保存到其他地方也?无论如何,一旦你打包并执行Spring Boot应用程序,该目录将不可用(默认情况下,除非你重新创建它)。 –

+0

您将在重新部署时丢失这些文件 - 如果这些文件是可以写入temp-dir的临时文件。持久数据(应该在重新部署中存活)通常在'/ var/...'下。 – fateddy

+0

很高兴知道,但临时文件在这种情况下会好起来的 – user123959

这是不奇怪的。

你在你的类路径依赖:

org.springframework.boot:spring-boot-devtools 

您正在编写到被扫描的弹簧引导重载元件的位置发生变化 - 如你所说,这导致无限循环。

设置您application.properties:

spring.devtools.restart.enabled = false 

更多,在这里:

https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html https://docs.spring.io/spring-boot/docs/current/reference/html/howto-hotswapping.html