首页>代码>Spring自定义ThreadLocal Scope实现类:ThreadScope>/spring-custom-scope-thread-scope-example/src/main/java/com/memorynotfound/spring/core/scope/ThreadScope.java
package com.memorynotfound.spring.core.scope;

import org.springframework.beans.factory.ObjectFactory;
import org.springframework.beans.factory.config.Scope;
import org.springframework.core.NamedThreadLocal;
import java.util.HashMap;
import java.util.Map;

public class ThreadScope implements Scope {

    private final ThreadLocal<Map<String, Object>> threadScope =
            new NamedThreadLocal<Map<String, Object>>(ThreadScope.class.getName()) {
                @Override
                protected Map<String, Object> initialValue() {
                    return new HashMap<String, Object>();
                }
            };

    @Override
    public Object get(String name, ObjectFactory<?> objectFactory) {
        Map<String, Object> scope = this.threadScope.get();
        Object object = scope.get(name);
        if (object == null) {
            object = objectFactory.getObject();
            scope.put(name, object);
        }
        return object;
    }

    @Override
    public Object remove(String name) {
        Map<String, Object> scope = this.threadScope.get();
        return scope.remove(name);
    }

    @Override
    public void registerDestructionCallback(String name, Runnable callback) {
    }

    @Override
    public Object resolveContextualObject(String key) {
        return null;
    }

    @Override
    public String getConversationId() {
        return Thread.currentThread().getName();
    }

    public void clear(){
        Map<String, Object> scope = this.threadScope.get();
        scope.clear();
    }
}
最近下载更多
最近浏览更多
szf123  LV12 2023年5月30日
xiao菜  LV2 2021年6月2日
srl2881552  LV10 2021年5月20日
leon528616  LV2 2021年5月20日
3399509525  LV5 2021年4月14日
kayok  LV19 2021年3月16日
8763804  LV2 2021年3月10日
crowd_lu 2021年2月28日
暂无贡献等级
wghai2 2021年2月27日
暂无贡献等级
xdd211414  LV17 2021年2月26日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友