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

nginx wordpress bug站长工具seo综合查询分析

nginx wordpress bug,站长工具seo综合查询分析,做 性爱 图片网站,贝智康积分网站开发前言 本文针对已经了解了ThreadLocal的读者 本文将会运用threadLocal给出完整的需要在一个上下文中传递全局参数 如userInfo 信息的解决方案 基本思路: 1、定义ThreadContext 作为底层“线程隔离存储容器” 2、基于ThreadContext 衍生出多个特定场景的业务封装类&…

前言

本文针对已经了解了ThreadLocal的读者 本文将会运用threadLocal给出完整的需要在一个上下文中传递全局参数 如userInfo 信息的解决方案

基本思路:

1、定义ThreadContext 作为底层“线程隔离存储容器”
2、基于ThreadContext 衍生出多个特定场景的业务封装类(Context 工具类)
3、新增一个业务上下文,只需加一个封装类,不改底层逻辑

ThreadContext

import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;public final class ThreadContext {private static final ThreadLocal<Map<String, Object>> THREAD_LOCAL = new ThreadLocal();public ThreadContext() {}public static <T> T getAttribute(String key) {return getNotInheritableAttributes().get(key);}private static Map<String, Object> getNotInheritableAttributes() {Map<String, Object> attributes = (Map)THREAD_LOCAL.get();if (attributes == null) {attributes = new ConcurrentHashMap(32);THREAD_LOCAL.set(attributes);}return (Map)attributes;}public static void setNotInheritableAttribute(String key, Object value) {Assert.notBlank(key, "ThreadLocal的key不能为空!", new Object[0]);Assert.notNull(value, "ThreadLocal的value不能为空!", new Object[0]);getNotInheritableAttributes().put(key, value);}public static void setNotInheritableAttributes(Map<String, ?> attributes) {Assert.notEmpty(attributes, "ThreadLocal的参数不能为空!", new Object[0]);getNotInheritableAttributes().putAll(attributes);}public static void removeAttribute(String key) {Assert.notBlank(key, "key不能为空!", new Object[0]);getNotInheritableAttributes().remove(key);}public static void clearAttributes() {THREAD_LOCAL.remove();}
}

然后就可以基于ThreadContext 根据不同的业务衍生不同的Context 工具类

UserContext

public class UserContext {public static void setUserInfo(User user) {ThreadContext.setNotInheritableAttribute("USER_INFO", user);}public static User getUserInfo() {User user = (User)ThreadContext.getAttribute("USER_INFO");if (user == null) {throw new IllegalArgumentException("无法获取登录用户信息!");} else {return user;}}public static boolean hasUserInfo() {return ThreadContext.containsAttribute("USER_INFO");}public static void clear() {ThreadContext.removeAttribute("USER_INFO");}
}

任意类型的XXContext


public class BusinessContext {private static final String KEY = "business";public static void setBusiness(String info) {ThreadContext.setNotInheritableAttribute(KEY, info);}public static String getBusiness() {return (String)ThreadContext.getAttribute(KEY);}public static void clear() {ThreadContext.removeAttribute(KEY);}
}

总结

ThreadContext 管理存取逻辑

UserContext / BusinessContext 等专注业务字段

可复用、易拓展

新增一个业务上下文,只需加一个封装类,不改底层逻辑。

http://www.dtcms.com/wzjs/222156.html

相关文章:

  • 网站设置反爬虫的主要原因个人网站seo入门
  • 五屏网站建设如何网站模板源码
  • 网站建设怎样做好好看的seo网站
  • 电子商务网站建设规划开题报告小广告设计
  • 哈尔滨做网站公司有哪些个人怎么在百度上做推广
  • 推广seo网站的公司花都网络推广seo公司
  • 免费企业黄页查询网站青岛seo整站优化哪家专业
  • 江西城乡住房建设网站怎么进行网站推广
  • 电子商务网站建设方案案例衡阳网站建设公司
  • 建设网站投资多少seoul是哪个城市
  • 网站怎么做成二维码网上推广怎么收费
  • 网站建设企业最新报价免费seo网站推广在线观看
  • 泰安网约车平台有哪些台州seo快速排名
  • 上传网站需要什么软件石家庄seo网络推广
  • 牡丹区建设局网站手机百度推广怎么打广告
  • 网站解析后外贸营销型网站制作公司
  • 网站建设 模板品牌推广的步骤和技巧
  • 哈尔滨营销网站制作广东seo点击排名软件哪家好
  • 广州做包包的网站seo外包多少钱
  • 西安哪家公司网站做的好摘抄一小段新闻
  • 上海家装口碑最好的公司百度seo白皮书
  • 泰安网课seo指的是搜索引擎
  • 网站开发 项目规划 怎么写国外网站排名前十
  • 做网站的框架结构百度推广一个点击多少钱
  • 专业做二手房的网站有哪些windows7系统优化工具
  • 购物网站设计意义北京seo代理公司
  • 网络公司网站案例如何推广一个项目
  • 菏泽定制网站建设推广哈尔滨seo
  • 设计制作植物标识牌最好用的系统优化软件
  • 响应式网站开发框架最佳磁力吧ciliba磁力链