首页 文章

Spring Boot类路径

提问于
浏览
11

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

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

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

src/main/resources

将被复制到 classpath 内,所以我可以将我的静态内容放入:

src/main/resources/static

一切都会正常工作,我很高兴,因为我可以在 src 目录下拥有我的静态内容 .

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

  • 为什么文档没有说静态内容放在 src/main/resources/static 而不是谈论类路径(我觉得这有点令人困惑)?

  • 假设 src/main/resources/ 中的内容将始终复制到类路径中,这样做是否合适?

  • 是否有一些Spring Boot官方文档解释了我应该在除Java类和包之外的类路径中找到的内容(到目前为止我只知道我可以找到 src/main/resources/ 中的所有内容)?

2 回答

  • 14

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

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

    Spring启动文档讨论了类路径,因为它不应该假设您的项目是如何设置的 .

  • 3

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

    广告2:只要你没有搞乱默认的Maven配置,那么就可以安全地假设这一点 .

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

相关问题