package com.shkpr.service.alambizplugin.dbdao; import com.shkpr.service.alambizplugin.SpringContextUtil; import com.shkpr.service.alambizplugin.dbdao.services.intef.*; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; public class DBMgrProxy { final static Set> INIT_CLASS = new HashSet>(){{ add(UserDBService.class); }}; private Map, Object> mapClass2Instance = new ConcurrentHashMap<>(); private static volatile DBMgrProxy msInstance = null; public static DBMgrProxy getInstance(){ if (msInstance == null){ synchronized (DBMgrProxy.class){ if (msInstance == null) msInstance = new DBMgrProxy(); } } return msInstance; } private DBMgrProxy() { } public void init(){ for (Class item:INIT_CLASS) mapClass2Instance.put(item, SpringContextUtil.getBean(item)); } public T applyXXXApi(Class className){ T cls = (T)mapClass2Instance.get(className); if (cls == null){ synchronized (this){ cls = (T)mapClass2Instance.get(className); if (cls == null){ cls = SpringContextUtil.getBean(className); mapClass2Instance.put(className, cls); } } } return cls; } }