Spring 引导类路径

Spring Boot classpath

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

By default Spring Boot will serve static content from a directory called /static (or /public or /resources or /META-INF/resources) in the classpath.

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

src/main/resources

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

src/main/resources/static

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

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

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

类路径还包含其他库 (JAR),这些库也可以有一个 static 文件夹,然后将包含该文件夹以提供静态资源。因此,如果文档只说明文件夹 src/main/resources/static,那将是不完整的。

广告 2:只要您不破坏默认的 Maven 配置,就可以安全地假设。

广告 3:也许从 Oracle 官方文档开始:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html。提示:当然不仅仅是resources文件夹的内容,在classpath里面,当然也都是编译出来的类,因此得名

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

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

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