BizContext的配置

87 阅读1分钟
package com.gschen.customer.config;  
  
import org.apache.commons.lang3.StringUtils;  
  
import java.util.HashMap;  
import java.util.Map;  
  
/**  
* @author : gschen  
* @since : 1/12/24  
*/  
public class BizContext {  
    private static final ThreadLocal<Map<String, Object>> CONTEXT = new InheritableThreadLocal<>();  
  
    /**  
    * 获取设置的全部的值  
    *  
    * @return  
    */  
    @SuppressWarnings("all")  
    public static <T> T get(String key, T defaultVal) {  
        T t = (T) getLocalMap().get(key);  
        return t == null ? defaultVal : t;  
    }  

    public static <T> T get(String key) {  
        return get(key, null);  
    }  

    /**  
    * 把 header 的 上下文信息放到 threadLocal  
    */  
    public static void set(String key, Object obj) {  
        if (StringUtils.isBlank(key) || obj == null) {  
            return;  
        }  
        getLocalMap().put(key, obj);  
    }  

    public static void remove(String key) {  
        getLocalMap().remove(key);  
    }  

    /**  
    * 手动清除  
    *  
    * @param  
    */  
    public static void clear() {  
        CONTEXT.remove();  
    }  

    private static Map<String, Object> getLocalMap() {  
        Map<String, Object> map = CONTEXT.get();  
        if (map == null) {  
            map = new HashMap<>(4);  
            CONTEXT.set(map);  
        }  
        return map;  
    }  
}