threadlocal应用
2024-09-18 21:05:23
public class DataSourceSelector { /**
* 线程threadlocal
*/
private static ThreadLocal<String> dbLookCxt = new ThreadLocal<>(); public static final String _DEFAULT_DB = MultiDruidDataSources.PREFIX+".default"; public static String getDataSourceKey() {
String db = dbLookCxt.get();
if (db == null) {
db = _DEFAULT_DB;
}
return db;
} public static void select(String dbKey) {
dbLookCxt.set(dbKey);
} public static void remove() {
dbLookCxt.remove();
} }
以及用于
public class TransactionContextHolder { public static final String TRACE_ID = "traceId"; private static ThreadLocal<HashMap<String, String>> locals = new ThreadLocal<>(); public static void set(HashMap<String, String> data){
HashMap<String, String> map = locals.get();
if (map == null) {
locals.set(data);
} else {
map.putAll(data);
}
if (data.containsKey(TRACE_ID)) {
String traceIdValue = data.get(TRACE_ID);
MDC.put("traceId", traceIdValue);
} }
public static String get(String key) {
return get().get(key);
} public static void set(String key, String value){
if (value != null && key != null){
get().put(key, value);
if (TRACE_ID.equals(key)) {
MDC.put("traceId", value);
}
}
} public static HashMap<String, String> get() { HashMap<String, String> map = locals.get();
if (map == null) {
map = new HashMap<>();
set(map);
}
return map;
} public static void remove(){
locals.remove();
MDC.remove("traceId");
} public static void remove(String key) {
get().remove(key);
} public static void copy(Map<String, String> parentContext) {
if (parentContext != null && parentContext.size() > 0) {
get().putAll(parentContext);
}
}
}
最新文章
- .NET LINQ 数据排序
- sql语句修改字段长度
- 使用Keil uVision下载hex文件
- eclipse配置ros cakin编译环境
- javascript实现颜色渐变
- 3种SQL语句分页写法
- linux cmd: ps
- js--事件对象的理解1
- 理解oauth2.0【转载】
- [POI2015]KIN[线段树]
- [SDOI2013]森林 主席树+启发式合并
- LeetCode算法题-Nim Game(Java实现)
- Docker最全教程——从理论到实战
- Intellij IDEA注册激活破解
- WebView与 JS 交互方式
- ABAP-FI常用BAPI
- zabbix 监控报警详细邮件内容
- 用crash来分析一下proc的文件访问
- MySQL 存储过程/游标/事务
- 4-13 Webpacker-React.js; 用React做一个下拉表格的功能: <;详解>;
热门文章
- iview-cli 设置跨域代理服务器
- 电商项目maven框架搭建引入dubbo配置文件报错
- 数据驱动之 python + requests + Excel
- C#中定时任务被阻塞问题
- Ubuntu安装微信/企业微信
- [3] ScanRefer论文精读 3DVisual Grounding开山之作
- 51电子-STC89C51开发板:程序烧录(刷写) 到 IC 设置
- 免费赠票 | Cloud Ace 受邀参加 GTC2022 全球流量大会,助力中国企业扬帆出海!
- 00_learn_python
- API对象--Ingress(chrono《kubernetes入门实战课》笔记整理)