【问题标题】:What's the correct way of deploying a spring boot application with static content使用静态内容部署 Spring Boot 应用程序的正确方法是什么
【发布时间】:2014-04-19 15:54:15
【问题描述】:

我有一个使用 gradle 构建的 Spring Boot Web 应用程序,它完全基于 JavaConfig,结构如下所示。

从网络上的文档和信息中,我可以简单地构建一个 jar 文件,将它放到任何服务器中,运行 jar 文件,然后我的应用程序就会启动并运行。 但是,当我直接运行 jar 文件时,应用程序无法找到我的 css、js 或任何图像文件。如您所见,当我在 Thymeleaf 查找模板时遇到问题时,我确实复制了模板文件夹。 这是我的 WebConfig 类...

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");

}


@Bean
MultipartConfigElement multipartConfigElement() {
    MultiPartConfigFactory factory = new MultiPartConfigFactory();
    factory.setMaxFileSize("1024KB");
    factory.setMaxRequestSize("1024KB");
    return factory.createMultipartConfig();
}

}

我需要做什么才能访问正在运行的 .jar 文件中的 .css 和 .js 文件。我需要做任何额外的配置才能使这些文件在生产中可用吗? 当我从 src 文件夹位置通过 gradle 运行应用程序时,它工作正常。

我很感激我能得到的任何指点。 谢谢。

【问题讨论】:

    标签: java css spring spring-boot


    【解决方案1】:

    您会发现此链接非常有用。 Serving Static Web Content with Spring Boot

    虽然这对你们中的那些人来说可能不是一个新的启示 继 Spring Boot 自 SpringOne 公告以来,有一个 您可能不知道的细节。 Spring Boot 会自动 添加位于以下任一位置的静态 Web 资源 目录:

    /META-INF/resources/
    /resources/
    /static/
    /public/
    

    【讨论】:

    • 我之前用过那个例子。我已将所有静态内容移至资源文件夹,但仍无法访问静态内容。例如,在 /resources/js/somefile.js 中引用 .js 文件不会产生结果。
    • @Jome 您是否尝试过删除 AddResourceHandlers() 方法并查看它是否有效?看起来 spring 已经在 WebMvcAutoConfiguration 中配置了/resources。我的配置和你的差不多。唯一的区别是我的静态内容在webapp/static 而不是webapp/resources。我也不会覆盖 addResourceHandlers。我也相信 addResourceLocations() 需要是一个类路径。例如,addResourceLocations("classpath:/resources/")
    • 我刚刚完全禁用了该类,但我仍然无法访问这些文件。出于好奇,您如何引用 html 中的文件?就像我说的,当我使用 gradle 运行应用程序并引用这样的 js 文件时; “/resources/js/custom.js”,文件通过正常。只是在我独立运行构建的 jar 文件时不这样做。
    • @Jome 我使用 /static/test.js 访问它们。一件事是我使用 Maven 来构建 .war 而不是 .jar。使用 webapp 文件夹,它表明您正在构建一个 .war 文件。我不知道它是否期望文件位于 src/main/resources 中。
    • 嗨@John。我实际上已经摆脱了 webapp 文件夹并将文件移动到资源文件夹。我现在将它们移动到主/静态?
    猜你喜欢
    • 2019-08-06
    • 1970-01-01
    • 2022-01-02
    • 2015-05-24
    • 1970-01-01
    • 2019-03-05
    • 2017-03-01
    • 1970-01-01
    • 2021-02-07
    相关资源
    最近更新 更多