阻止Spring尝试读取旧资源流

时间:2017-02-21 19:16:20

标签: java spring spring-mvc caching

我有一个Spring Boot MVC应用程序,我在其中提供打包在OSGi包中的内容。使用OSGi的目的是使这些内容包完全独立且可热插拔。

请求通过URL映射到捆绑资源。

我遇到的问题发生在我用相同的URL指向的新捆绑包替换捆绑包时,请求来自旧捆绑包提供的资源。

Spring看到它已经返回了该URL的资源,因此尝试打开缓存包URL的流,以确定上次修改资源的时间,该资源现在与现在不可用的bundle和throws相关联m = cm.ScalarMappable(cmap=cm.Oranges) m.set_array(A) cbar = plt.colorbar(m)

到目前为止我发现的所有内容都涉及修改客户端缓存策略,而不是Spring内部缓存。此外,尝试通过IOExceptionspring.resource.chain.caching禁用缓存不起作用,因为Spring仍会尝试找出上次修改的时间戳。

1 个答案:

答案 0 :(得分:2)

原因是在一个意想不到的地方有一个配置。

在我的WebMvcConfigurerAdapter扩展配置类中,在addResourceHandlers方法中:

registry.addResourceHandler("**/pluginresource/**")
.setCacheControl(CacheControl.noStore() )
.resourceChain(false)
.addResolver(pluginResourceResolver);

resourceChain(false)实际上设置Spring是否会使用使用缓存的默认处理程序创建链。