当前位置: 首页 > 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://wiki.neutronadmin.com/news/209356/

相关文章:

  • 营销展示型网站模板c2c网站建设需求分析
  • 个人网站下载推广计划和推广单元什么区别
  • wordpress的教程智推seo
  • 河南省建设教育协会网站程序源代码下载网站
  • 网站开发 印花税网站建设工作汇报
  • 新开发网站松江建网站
  • 国际公司湛江seo推广外包
  • 免费网站建设哪家好浙江网站建设 seo
  • 沧州市网站建设公司wordpress如何看网页地址
  • 高碑店网站建设价格万网归一
  • 长沙市网站开发北京网络开发公司
  • 新华网站建设网站标题和关键词一样
  • 网站的基本建设投资泰州seo外包公司
  • 网站建设托管合同公司网站建设一条龙
  • 绿色环保企业网站模板英特尔网站开发框架
  • 什么样建网站网页分析从哪些方面
  • wap网站 微信登录平面广告设计趋势
  • 授权网站系统互联网公司经营范围
  • seo搜索优化网站推广排名巨野城乡住房建设局网站
  • 文字头像在线制作免费生成seo网络营销的技术
  • 禅城南庄网站制作免费提升学历
  • 杭州网站建设费用多少钱免费的个人简历模板excel
  • 网站正在建设中 英文郑州专业做网站企业
  • 编程就是做网站吗网页升级访问永久
  • 建立商城网站100种创意活动策划
  • 建平县营商环境建设局网站静态网站开发
  • 东莞专业做淘宝网站建设设计素材网站排行
  • 做百度推广需要网站吗岱山县网站建设
  • 校园网的网站建设内容建设校园网站的必要性
  • 网站镜像代理怎么做安康市代驾公司