Spring Boot 中的动态服务静态位置

Posted

技术标签:

【中文标题】Spring Boot 中的动态服务静态位置【英文标题】:Dynamic Serve static-locations in spring boot 【发布时间】:2018-05-20 10:45:56 【问题描述】:

我有一个 Spring Boot 应用程序,其中包含使用 Polymer 构建的 Web 应用程序。 Polymer Web 应用程序使用 ES5 和一个 ES6 构建两个版本。这意味着我有两个单独的 Web 应用程序构建。现在基于 Chrome 和 firefox 等用户代理,我想提供 ES6 版本,而对于 IE11,我必须提供 Es5 版本。

两个版本的应用程序都放在spring boot的静态文件夹中

/static/es5
/static/es6

两个版本都包含 index.html 文件,并且包含相同的文件夹结构,只是代码不同。

我希望用户点击相同的 URL,并且他们应该根据他们的用户代理/浏览器动态获得服务资源。

我在 application.properties 中定义了以下属性。

 spring.resources.static-locations=classpath:/public/es5/

如何让 es5 和 es6 资源动态服务???

`

【问题讨论】:

【参考方案1】:

您必须编写自定义ResourceResolver。它将使您可以访问请求,因此您可以根据请求标头提供资源。

文档:

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/resource/ResourceResolver.html

解释:

https://spring.io/blog/2014/07/24/spring-framework-4-1-handling-static-web-resources

【讨论】:

自定义 ResourceResolver 仅在第一次请求服务器获取静态资源时调用一次。

以上是关于Spring Boot 中的动态服务静态位置的主要内容,如果未能解决你的问题,请参考以下文章

Docker中的Spring Boot静态文件夹

Spring Cloud Spring Boot mybatis分布式微服务云架构 开发Web应用

43. Spring Boot动态数据源(多数据源自动切换)从零开始学Spring Boot

Spring Boot:动态更改静态资源处理程序?

更改 Spring-boot 静态 Web 资源位置?

Spring Boot中静态资源等应该放在啥位置