All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hothub.module.common.manager.StoreManager Maven / Gradle / Ivy

The newest version!
package org.hothub.module.common.manager;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;
import java.util.Map;

/**
 *
 * Description: 用ThreadLocal提供一个存储线程内变量的地方.
 *              客户端代码可以用静态方法存储和获取线程内变量
 */
public class StoreManager {

    private final static Logger logger = LoggerFactory.getLogger(StoreManager.class);


    /** * 保存变量的ThreadLocal,保持在同一线程中同步数据. */
    private final static ThreadLocal> MANAGER_MAP = new ThreadLocal>() {
        @Override
        protected Map initialValue() {
            return new HashMap<>();
        }
    };



    protected StoreManager() {
    }



    /**
     * 获得线程中保存的属性.
     *
     * @param attribute 属性名称
     * @return 属性值
     */
    public static Object get(String attribute) {
        Map map = MANAGER_MAP.get();

        return map != null ? map.get(attribute) : null;
    }



    /**
     * 获得线程中保存的属性,使用指定类型进行转型.
     *
     * @param attribute 属性名称
     * @param clazz 类型
     * @param  自动转型
     * @return 属性值
     */
    public static  T get(String attribute, Class clazz) {
        return (T) get(attribute);
    }



    /**
     * 设置制定属性名的值.
     *
     * @param attribute 属性名称
     * @param value 属性值
     */
    public static void set(String attribute, Object value) {
        Map map = MANAGER_MAP.get();

        map.put(attribute, value);

        MANAGER_MAP.set(map);
    }



    /**
     * 清除当前线程中保存的值
     * */
    public static void remove() {
        logger.info("StoreManager - Remove");
        MANAGER_MAP.remove();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy