在 spring boot 中添加外部静态文件(css、js、png ...)

Far*_*ook 4 java spring spring-mvc thymeleaf spring-boot

背景


我有一个spring boot应用程序,该应用程序将logo.png文件添加到static资源文件的文件夹中,该文件最终内置到执行中使用的 jar 文件中。

这个 jar 应用程序需要在不同客户端的多个实例中运行。所以我所做的是创建一个外部application.properties文件来区分每个用户的设置。 http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

问题


但问题是,我需要更改应用程序每个实例的徽标。我无法将客户徽标嵌入到我的应用程序 jar 中。相反,我需要像我的 application.properties 一样将它保持在外部。

目前,我所做的是logo.pngjar执行的同一文件夹中检查文件,如果是,则读取文件,获取base64数据并将其显示在img标签中。

但我希望这作为静态内容以适当的方式完成。我需要将静态内容具体化。所以我可以让每个客户都有一个特定的 jar 实例,运行不同的静态资源内容

例如。我需要保留如下外部静态文件,并从我的视图中的 urlhrefsrchtml 标签的属性进行访问。

概括


所需的文件夹结构

+ runtime
  - myapp-0.1.0.jar
  - application.properties
  + static
    - logo.png
Run Code Online (Sandbox Code Playgroud)

应该可以访问

<img th:src="@{/logo.png}" />
Run Code Online (Sandbox Code Playgroud)

sod*_*dik 5

您可以使用资源处理程序来提供外部文件 - 例如

@Component
class WebConfigurer extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
         registry.addResourceHandler("/ext/**").addResourceLocations("file:///yourPath/static/");
    }

}
Run Code Online (Sandbox Code Playgroud)