Java Spring Boot开发工具公开整个类路径
今天,我注意到我正在开发的Spring Boot应用程序出现了一个意想不到的行为:如果我在浏览器上键入,它会愉快地下载文件 进一步检查后,我的整个类路径似乎都暴露出来了。只需发送GET请求,我就可以下载模板文件,甚至是编译的Java Spring Boot开发工具公开整个类路径,java,spring,spring-boot,Java,Spring,Spring Boot,今天,我注意到我正在开发的Spring Boot应用程序出现了一个意想不到的行为:如果我在浏览器上键入,它会愉快地下载文件 进一步检查后,我的整个类路径似乎都暴露出来了。只需发送GET请求,我就可以下载模板文件,甚至是编译的.class文件 在逐一注释项目的依赖项之后,似乎是spring boot devtools导致了问题,因为只要将其删除,应用程序就会按照预期运行 据我所知,当您打包应用程序并使用java-jar运行它时,Devtools提供的功能应该被禁用,但即使如此,问题仍然存在 我从下
.class
文件
在逐一注释项目的依赖项之后,似乎是spring boot devtools
导致了问题,因为只要将其删除,应用程序就会按照预期运行
据我所知,当您打包应用程序并使用java-jar
运行它时,Devtools提供的功能应该被禁用,但即使如此,问题仍然存在
我从下载了一个新的项目,除了
web
和devtools
依赖项之外什么都没有,我能够重现这个问题,所以我猜这是一些预期的行为,尽管我在任何地方都找不到它的文档。或者它可能是Devtools上的一个bug。对此有何想法?将spring boot devtools
的依赖范围更改为可选
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>optional</scope>
</dependency>
org.springframework.boot
确实表明,当使用java-jar运行应用程序时,devtools将被自动禁用,但它似乎没有这样做。它进一步解释了,您可以将此依赖项作为可选项来定义范围,以防止其被传递应用。这就是诀窍
更新:
这被证实是Spring Boot 1.4.3.1版本中的一个回归。有关更多详细信息,请参阅。该修复程序目前针对的是1.5.0。我投票将这个问题作为离题题来结束,因为这不是堆栈溢出的问题,而是应该在Spring Boot中报告为问题。但问题恰恰是这是否应该报告为问题(根据punkrocker27ka的回答,是)或在Spring文档的某些模糊部分中描述的正确行为。为了让它被接受,你对如何改写它有什么建议吗?或者这肯定是离题了?