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

建设部网站公示东营网站建设哪家更好

建设部网站公示,东营网站建设哪家更好,乐清新闻综合频道直播,发布出租信息免费的网站在开发过程中,很多时候我们会使用ThreadLocal来临时缓存数据,当一次数据请求执行完成后需要主动执行释放当前ThreadLocal缓存数据资源,防止未能及时释放导致下一次访问时候ThreadLocal依然保持上一次缓存的数据。 spring提供两种方式去监听一…

在开发过程中,很多时候我们会使用ThreadLocal来临时缓存数据,当一次数据请求执行完成后需要主动执行释放当前ThreadLocal缓存数据资源,防止未能及时释放导致下一次访问时候ThreadLocal依然保持上一次缓存的数据。

spring提供两种方式去监听一次请求完成事件。
1、HandlerInterceptor -> afterCompletion 使用拦截方式,再执行完成后执行afterCompletion
2、ApplicationListener -> ServletRequestHandledEvent ,ApplicationListener 提供的是监听那种事件类型,ServletRequestHandledEvent 就是一次请求结束后的事件。

通过上述两种方式可以很方便的在一次请求完成移除当前线程ThreadLocal。

ThreadLocal 工具

public class ThreadLocal2UserSessionUtil {private static final ThreadLocal<Object> LOCAL = new ThreadLocal<>();/*** 设置数据** @param paramMap*/public static void set(Map<String, Object> paramMap) {LOCAL.set(paramMap);}/*** 获取值** @return*/public static Map<String, Object> get() {if (Objects.isNull(LOCAL.get())) {return new HashMap<>();} else {return (Map<String, Object>) LOCAL.get();}}/*** 获取值** @return*/public static Object get(String key) {Map<String, Object> resMap = (Map<String, Object>) LOCAL.get();if (null == resMap) {return null;}return (null != resMap.get(key)) ? resMap.get(key) : null;}/*** 每次取出数据后必须清空 否则就会出现值重复*/public static void remove() {LOCAL.remove();}/*** 获取app登录token** @return*/public static String getToken4App() {Map<String, Object> map = get();return (null == map) ? "" : (String) map.get(EncryptReqParamNameConstant.PARAM_TOKEN);}/*** 初始化数值** @return*/public static void pushUserToken4App(String appToken) {Map<String, Object> localMap = get();if (StringUtil.isNotBlank(appToken)) {localMap.put(EncryptReqParamNameConstant.PARAM_TOKEN, appToken);set(localMap);}}/*** 初始化数值** @return*/public static void pushUserId4App(Long userId) {Map<String, Object> localMap = get();if (null != userId) {localMap.put(EncryptReqParamNameConstant.USER_ID, userId);set(localMap);}}/*** 初始化数值  注意这里只有加解密才将用户id放入** @return*/public static Long getUserId4App() {Map<String, Object> map = get();return (null == map) ? null : (Long) map.get(EncryptReqParamNameConstant.USER_ID);}
}

HandlerInterceptor 方式

@Slf4j
@Component
public class ThreadLocalRemoveInterceptor implements HandlerInterceptor {@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {HandlerInterceptor.super.afterCompletion(request, response, handler, ex);ThreadLocal2UserSessionUtil.remove();}
}

在web控制器中加入监听器

@Configuration
public class PathPrefixMvcConfigurer implements WebMvcConfigurer {@Autowiredprivate ThreadLocalRemoveInterceptor threadLocalRemoveInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(threadLocalRemoveInterceptor).addPathPatterns("/*");}
}

2、通过监听器方式

@Slf4j
@Component
public class ServletRequestHandledEventListener implements ApplicationListener<ServletRequestHandledEvent> {@Overridepublic void onApplicationEvent(ServletRequestHandledEvent event) {ThreadLocal2UserSessionUtil.remove();}
}

完成

http://www.hengruixuexiao.com/news/13993.html

相关文章:

  • 企业网站 html模板下载网络营销方案的范文
  • 西宁高端网站开发公司百度竞价排名事件分析
  • 做暧暧小视频网站百度科技有限公司
  • 网站制作公司有哪些证百度推广电话客服
  • 网站手机端怎么做深圳推广公司有哪些
  • 申请网站就是做网站吗百度统计流量研究院
  • ui设计和平面设计哪个难众志seo
  • as3 xml 网站模板 下载seo是什么品牌
  • wordpress做电商网站网站建设运营
  • 网站备案需要提供网站建设方案书制作网页多少钱
  • .net网站建设产品网络推广方式
  • wordpress搭建服务器seo排名软件
  • 日本做的视频网站有哪些问题临沂网站建设优化
  • 中山做网站服务好接广告推广
  • 汕头建站培训枣庄网络推广seo
  • 为什么大公司不用uniapp安卓优化大师手机版下载
  • 常见动态网站开发技术对比军事新闻今日最新消息
  • 中国做美国酒店的网站拉新平台
  • 沂源放心企业网站建设方案报价seo的宗旨是什么
  • 企业型网站怎么做ks免费刷粉网站推广马上刷
  • 网站主服务器所在地地址开发网站建设公司
  • web网站开发学院seo站长工具推广平台
  • 佛山市房产信息网宝鸡网站seo
  • 做网站要法人身份证吗学百度推广培训
  • 网站怎样做的有吸引力优化网址
  • 手机网站推广怎么做营销软件培训
  • 如何制作私人网站网址查询入口
  • 淮安建设局网站推广平台排行榜app
  • 无网站做网赚免费软文网站
  • 宁波做公司网站优化大师下载电脑版