Spring Boot Devtools暴露整个类路径

时间:2017-01-25 15:07:34

标签: java spring spring-boot

今天我注意到我正在开发的Spring Boot应用程序出现意外行为:如果我在浏览器上输入http://localhost:8080/application.properties,它会愉快地下载该文件。

进一步检查后,看起来我的整个类路径都暴露了。我只需发送GET请求即可下载模板文件甚至编译的.class文件。

在逐个评论项目的依赖项之后,似乎spring-boot-devtools是导致问题的那个,因为无论何时删除它,应用程序都会按预期运行。

据我所知,当您打包应用程序并使用java -jar运行它时,Devtools提供的功能应该被禁用,但即使这样,问题仍然存在。

我从http://start.spring.io/下载了一个新项目,只包含webdevtools依赖项,我能够重现问题,所以我猜这是预期的行为,即使我无法在任何地方找到它。或者也许这是Devtools的一个错误。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

spring-boot-devtools的依赖范围更改为optional

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
  <scope>optional</scope>
</dependency>

documentation确实表明在使用java -jar运行应用程序时,将自动禁用devtools,它似乎没有这样做。它进一步解释了您可以将此依赖项作为可选范围进行调整,以防止它被传递应用。这就是诀窍。

<强>更新

这被证实是Spring Boot 1.4.3.RELEASE的回归。有关详细信息,请参阅GitHub Issue。该修复程序目前针对1.5.0。