Java Spring MVC静态资源版本控制,使用Thymeleaf和Angular
我有一个单页应用程序,后端是SpringMVC、thymeleaf,前端是Angular和webpack。Spring MVC负责与thymeleaf一起提供版本化的静态资源,实际上以下配置用于此:Java Spring MVC静态资源版本控制,使用Thymeleaf和Angular,java,angular,spring-mvc,webpack,thymeleaf,Java,Angular,Spring Mvc,Webpack,Thymeleaf,我有一个单页应用程序,后端是SpringMVC、thymeleaf,前端是Angular和webpack。Spring MVC负责与thymeleaf一起提供版本化的静态资源,实际上以下配置用于此: @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addRe
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/")
.setCacheControl(CacheControl.maxAge(cacheControlMaxAge, SECONDS).noTransform().mustRevalidate())
.resourceChain(false)
.addResolver(new VersionResourceResolver().addContentVersionStrategy("/**"))
.addTransformer(new CssLinkResourceTransformer());
}
另外,下面的过滤器ResourceUrlEncodingFilter
用于对资源URL进行编码
在index.html的前端,静态资源以以下方式包括:
th:src="@{/resources/static/js/some.js}"
th:src="@{/resources/static/css/some.css}"
th:src="@{/resources/static/img/some.img}"
对于index.html
中的这种硬编码链接,一切都很好,也就是说,在浏览器的“网络”选项卡中,我可以看到对静态资源使用版本名称的请求
但问题在于以下方面:我另外使用webpack来构建angular应用程序。Web包可以根据前端代码库中使用的导入动态地将脚本包含到index.html
。因此,对于这种情况,我不能手动用thymeleaf标记包装脚本链接
您能否建议如何针对这种情况进行管理,这方面的最佳做法是什么