当前位置: 首页 > news >正文

临清网站推广中国站长之家爱站网

临清网站推广,中国站长之家爱站网,国内购物平台,做设备开通哪个网站好问题#xff1a; 启用了Spring且将范围设置为Request的缓存需要由不在请求范围内的singleton bean访问。 解#xff1a; Spring使您能够创建缓存#xff0c;该缓存为请求范围保留数据。 例如 import org.springframework.cache.concurrent.ConcurrentMapCache; import org… 问题 启用了Spring且将范围设置为Request的缓存需要由不在请求范围内的singleton bean访问。 解 Spring使您能够创建缓存该缓存为请求范围保留数据。 例如 import org.springframework.cache.concurrent.ConcurrentMapCache; import org.springframework.cache.interceptor.SimpleCacheResolver; import org.springframework.cache.support.SimpleCacheManager; import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.ScopedProxyMode; import org.springframework.stereotype.Component; import org.springframework.web.context.WebApplicationContext; import java.util.ArrayList; import java.util.Collection; Component Scope(value WebApplicationContext.SCOPE_REQUEST, proxyMode ScopedProxyMode.TARGET_CLASS) public class RequestScopeCache extends SimpleCacheResolver { public RequestScopeCache() { SimpleCacheManager cacheManager new SimpleCacheManager(); Collection caches new ArrayList((Collection) new ConcurrentMapCache( myCache , true )); cacheManager.setCaches(caches); cacheManager.initializeCaches(); setCacheManager(cacheManager); } } 您可以在要缓存的任何方法周围使用此缓存 Cacheable(value myCache , cacheResolver requestScopeCache ) public String getName(String id) { //logic to get name from id } 现在如果您从具有请求上下文的任何控制器中调用此方法那就很好了即该方法是从服务Web请求的Spring bean的任何其他方法中调用的。 但是如果您需要从线程池或fork连接池中调用它事情就会变得棘手。 假设您收到一个请求并且需要生成多个线程以同时运行以收集数据以将请求存储到服务器。 这些线程耗尽了Web请求线程的上下文因此在Web请求线程上设置的任何“线程本地”值将对这些线程不可用。 因此如果最终从这些池线程中调用上述方法注释为使用缓存则会从spring中获取异常例如 Scope session is not active for the current thread ; IllegalStateException: No ; IllegalStateException: No thread -bound request found 但是有一种简单的方法可以修复它 从Web请求线程获取请求属性 RequestAttributes attributes RequestContextHolder.getRequestAttributes(); 2.将此属性传递给来自pool或fork / join的自定义线程。 基本上可以通过在构造函数中使用此属性创建可运行对象来完成 3.在调用标记为使用请求范围缓存的方法之前设置请求属性 RequestContextHolder.setRequestAttributes(attributes); 这将在当前线程的本地线程中设置属性该属性可用于调用上述方法。 测试用例中的综合要求 现在如果您正在从junit测试方法则可能根本没有请求对象。 因此您可以创建一个并按上述方法使用它来填充要测试的属性 RequestContextHolder.setRequestAttributes( new ServletRequestAttributes( new DummyRequest())); 翻译自: https://www.javacodegeeks.com/2020/05/access-spring-request-scope-cache-in-singelton-bean-called-from-fork-join-thread-pool.html
http://www.yutouwan.com/news/209356/

相关文章:

  • 郑州pc网站开发北京南站是高铁站吗
  • 济宁专业网站制作公司品牌建设新
  • 网站建设0基础菠菜网站做首存
  • 公司创建网站要多少钱成都市建设监理协会网站
  • 如何通过做网站赚钱北京网站建设有限公司
  • 成都 做网站wordpress用代码写页面模板
  • 营销网站制作多少钱网站制作老了
  • 公司想建个网站手机网站悬浮广告代码
  • 茂名网站设计宁波优化网站排名公司推荐
  • 万宁建设局网站wordpress 页面顺序
  • 正规的网站建设公佛山外贸网站建设新闻
  • 马鞍山网站设计制作展览展示设计网站
  • 建立网站要多少钱vps转移网站
  • 盘龙区网站建设外包学好wordpress怎么赚钱
  • 保险网站有哪些平台化妆品网站设计方案
  • 电脑经销部开具网站建设费wordpress下载站批量
  • 福建厦门网站建设电气营销型网站方案
  • 开通网站需要什么手续小程序商城哪家好服务
  • 富源县住房和城乡建设局网站惠州网站seo
  • 屯济宁做网站公司有男女做暖暖的视频网站
  • 网站构造下拉列表怎么做五金设备网站建设
  • 厦门网站开发建设电子商务网站建设与管理程序设计题
  • 网站建设与管理基础及实训网站风格设计怎么写
  • 公司网站开发背景不参与网站建设的弊端
  • 品古典家具网站模板上海建筑建材业网招标
  • 没有公司可以做网站吗企业网站建立策划书
  • 非洲购物网站排名展示型网站设计
  • 建设国际互联网网站商业设计网站有哪些
  • 百度站长平台h5网站湖南营销型网站建设企业
  • 学做网站课程wordpress增加404