DBMgrProxy.java 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package com.shkpr.service.alambizplugin.dbdao;
  2. import com.shkpr.service.alambizplugin.SpringContextUtil;
  3. import com.shkpr.service.alambizplugin.dbdao.services.intef.*;
  4. import java.util.HashSet;
  5. import java.util.Map;
  6. import java.util.Set;
  7. import java.util.concurrent.ConcurrentHashMap;
  8. public class DBMgrProxy {
  9. final static Set<Class<?>> INIT_CLASS = new HashSet<Class<?>>(){{
  10. add(UserDBService.class);
  11. }};
  12. private Map<Class<?>, Object> mapClass2Instance = new ConcurrentHashMap<>();
  13. private static volatile DBMgrProxy msInstance = null;
  14. public static DBMgrProxy getInstance(){
  15. if (msInstance == null){
  16. synchronized (DBMgrProxy.class){
  17. if (msInstance == null)
  18. msInstance = new DBMgrProxy();
  19. }
  20. }
  21. return msInstance;
  22. }
  23. private DBMgrProxy() {
  24. }
  25. public void init(){
  26. for (Class<?> item:INIT_CLASS)
  27. mapClass2Instance.put(item, SpringContextUtil.getBean(item));
  28. }
  29. public <T> T applyXXXApi(Class<T> className){
  30. T cls = (T)mapClass2Instance.get(className);
  31. if (cls == null){
  32. synchronized (this){
  33. cls = (T)mapClass2Instance.get(className);
  34. if (cls == null){
  35. cls = SpringContextUtil.getBean(className);
  36. mapClass2Instance.put(className, cls);
  37. }
  38. }
  39. }
  40. return cls;
  41. }
  42. }