从intelliJ执行文件IO时,Spring启动会自动重启

时间:2017-09-01 19:56:20

标签: java spring spring-mvc intellij-idea

我有一个非常奇怪的问题,当我以编程方式将文件保存到资源文件夹时,我的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();

2 个答案:

答案 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>