我有一个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内部缓存。此外,尝试通过IOException
或spring.resource.chain.caching
禁用缓存不起作用,因为Spring仍会尝试找出上次修改的时间戳。
答案 0 :(得分:2)
原因是在一个意想不到的地方有一个配置。
在我的WebMvcConfigurerAdapter扩展配置类中,在addResourceHandlers
方法中:
registry.addResourceHandler("**/pluginresource/**")
.setCacheControl(CacheControl.noStore() )
.resourceChain(false)
.addResolver(pluginResourceResolver);
resourceChain(false)
实际上设置Spring是否会使用使用缓存的默认处理程序创建链。