Spring Boot类路径

时间:2015-12-08 16:01:20

标签: java spring-mvc spring-boot classpath

Spring Boot's docs here中,关于提供静态内容,它说:

  

默认情况下,Spring Boot将提供目录中的静态内容   在/中调用/ static(或/ public或/ resources或/ META-INF / resources)   类路径

我发现目录中的所有内容:

src/main/resources

将被复制到类路径中,因此我可以将我的静态内容放入:

src/main/resources/static

一切都会正常,我很高兴,因为我可以将我的静态内容放在src目录下。

但是,我对此有一些疑问:

  1. 为什么文档没有说静态内容放在src/main/resources/static而不是谈论类路径(我觉得这有点令人困惑)?
  2. 是否可以假设src/main/resources/中的内容将始终复制到类路径中?
  3. 是否有一些Spring Boot官方文档解释了我应该在除Java类和包之外的类路径中找到的内容(到目前为止我只知道我可以找到来自src/main/resources/的所有内容)?

2 个答案:

答案 0 :(得分:17)

/src/main/resourcesMaven项目结构惯例。它是项目中放置资源的路径。在构建步骤中,Maven将在其中获取文件并将它们放在适当的位置,以便在运行时类路径中使用它们,例如在可执行文件.jar中,在类路径中使用的某些物理文件系统位置(使用{ {1}} java选项)等。

我可以选择自己构建我的应用程序或使用不同的构建工具。在这种情况下,-cp将不存在。但是,目的是使类路径相同,即。包含相同的资源和/src/main/resources个文件。

Spring启动文档讨论了类路径,因为它不应该对项目的设置方式做出假设。

答案 1 :(得分:4)

类路径还包含其他库(JAR),它们也可以有一个static文件夹,然后将其包含在服务静态资源中。因此,如果文档仅说明文件夹src/main/resources/static,那么它将是不完整的。

广告2:只要您不熟悉默认的Maven配置,就可以安全地假设这一点。

广告3:也许从官方的Oracle文档开始:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html。提示:当然,它不仅是资源文件夹的内容,它们在类路径中,当然也包括所有已编译的类,因此它的名称。