今天我注意到我正在开发的Spring Boot应用程序出现意外行为:如果我在浏览器上输入http://localhost:8080/application.properties,它会愉快地下载该文件。
进一步检查后,看起来我的整个类路径都暴露了。我只需发送GET请求即可下载模板文件甚至编译的.class
文件。
在逐个评论项目的依赖项之后,似乎spring-boot-devtools
是导致问题的那个,因为无论何时删除它,应用程序都会按预期运行。
据我所知,当您打包应用程序并使用java -jar
运行它时,Devtools提供的功能应该被禁用,但即使这样,问题仍然存在。
我从http://start.spring.io/下载了一个新项目,只包含web
和devtools
依赖项,我能够重现问题,所以我猜这是预期的行为,即使我无法在任何地方找到它。或者也许这是Devtools的一个错误。有什么想法吗?
答案 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。