12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- 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<Class<?>> INIT_CLASS = new HashSet<Class<?>>(){{
- add(UserDBService.class);
- }};
- private Map<Class<?>, 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> T applyXXXApi(Class<T> 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;
- }
- }
|