从智能执行文件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();
答
这是不奇怪的。
你在你的类路径依赖:
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
你尝试将文件保存到其他地方也?无论如何,一旦你打包并执行Spring Boot应用程序,该目录将不可用(默认情况下,除非你重新创建它)。 –
您将在重新部署时丢失这些文件 - 如果这些文件是可以写入temp-dir的临时文件。持久数据(应该在重新部署中存活)通常在'/ var/...'下。 – fateddy
很高兴知道,但临时文件在这种情况下会好起来的 – user123959