弹簧靴类路径

2022-09-01 08:50:24

Spring Boot的文档中,关于提供静态内容,它说:

默认情况下,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/

答案 1

/src/main/resourcesMaven 项目结构约定。它是项目内部放置资源的路径。在构建步骤中,Maven 会将文件放入其中,并将它们放在适当的位置,以便在运行时类路径中使用它们,例如在可执行文件中 ,类路径中使用的某些物理文件系统位置(带有 的选项)等。.jarjava-cp

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

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


答案 2

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

Ad 2:只要你不搞砸默认的Maven配置,那么就可以安全地假设这一点。

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


推荐