我有一个非常奇怪的问题,当我以编程方式将文件保存到资源文件夹时,我的spring应用程序将结束所有线程并重新启动。奇怪的是,如果我打包到war并在tomcat服务器上部署,问题似乎消失了,但是当我从IntelliJ运行它时问题就出现了。更重要的是,我希望在Spring启动后立即执行此文件写入,从而导致应用程序启动和重新启动的无限循环。我检查了build文件夹中的resources文件夹,看到每次spring启动时文件都会保存,但是应用程序似乎随后崩溃了。
以下是我用来编写文件的代码:
FileOutputStream fos = new FileOutputStream(
this.getClass().getClassLoader().getResource("processes/").getPath() + "/filename.xml"
);
fos.write(processXML);
fos.close();
答案 0 :(得分:3)
这一点都不奇怪。
您正在使用类路径依赖项:
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
答案 1 :(得分:0)
只需在pom.xml中添加两个首先是devtools依赖关系,然后在yml文件中添加属性。
#for not restarting the server every time
spring.devtools.restart.enabled: false
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>