具有指纹的Thymeleaf和静态资源

hea*_*mon 8 java spring thymeleaf

我尝试使用ResourceResolvers和ResourceTransformers http://spring.io/blog/2014/07/24/spring-为我的一些静态文件(例如app.min.js/style.min.css)添加指纹后缀. 框架-4-1-处理静态的Web资源

我已经像这样配置了ResourceHandler

@Configuration
@EnableWebMvc
public class ResourceResolverConfiguration extends WebMvcConfigurerAdapter {

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
  registry.addResourceHandler("bower_components/**/*.js", "/assets/**",  "/build/**")
                .addResourceLocations("/bower_components/", "/assets/", "/build/","classpath:/META-INF/webapp/build/")
                .resourceChain(true)
                .addResolver(
                        new VersionResourceResolver()
                            .addContentVersionStrategy("/**")   
                        );
 }
}
Run Code Online (Sandbox Code Playgroud)

在我的主控制器中,我添加了一些调试日志.

logger.debug("js =  '{}'" + this.resourceUrlProvider.getForLookupPath("/build/app.js"));
logger.debug("css = '{}'" + this.resourceUrlProvider.getForLookupPath("/build/styles/style.css"));
Run Code Online (Sandbox Code Playgroud)

运行Web应用程序后,从调试日志中,每个文件中都有指纹

APP-5d2c76ad6517f26d252d5cc93a4fc7d2.js

我可以直接访问这个文件,(即通过localhost:8080/build/app-5d2c76ad6517f26d252d5cc93a4fc7d2.js)

但是,当我在Web浏览器上单击查看源时,它仍然是没有任何指纹的原始文件.

在我的layout.html中,我像这样加载脚本/链接.

 <script th:src="@{/build/app.js}"></script>
 <link th:href="@{/build/styles/style.css}" rel="stylesheet"></link>
Run Code Online (Sandbox Code Playgroud)

我使用Thymeleaf作为模板引擎.配置或代码应该使Thymeleaf包含指纹文件或者我错过了什么?

非常感谢你.

chr*_*ke- 4

确保包含适当的编码过滤器,这是@{}语法用来重写 URL 的内容:

@Bean
public ResourceUrlEncodingFilter resourceUrlEncodingFilter() {
    return new ResourceUrlEncodingFilter();
}
Run Code Online (Sandbox Code Playgroud)