java常用单例

public class TerminalServiceHelper {
// 静态日志对象
private static final Logger logger = Logger.getLogger(TerminalServiceHelper.class); private TerminalServiceHelper() {      // 私有构造器
      initTerminalService(); }
// 私有静态实列对象
private static TerminalServiceHelper instance;
// 获取实例对象
public static TerminalServiceHelper getInstance() {
// 不存在就创建,存在就返回; 如果多线程调用如何保证唯一单例
if (instance != null) { return instance; } instance = new TerminalServiceHelper(); return instance; } private Map<String, String> serviceMap = new HashMap<String, String>(); public void add(String requestCode, String serviceName) { serviceMap.put(requestCode, serviceName); }

     

    private void initTerminalService() {
      // 初始化bean名称到集合对象中

      add("1001", "cardSignedService");

    }

public IBaseWebserviceService getService(String requestCode, ServletContext ctx) throws ParamException {
        WebApplicationContext springContext = WebApplicationContextUtils.getWebApplicationContext(ctx);
        IBaseWebserviceService geposAppService = null;
        try {
            geposAppService = (IBaseWebserviceService) springContext.getBean(serviceMap.get(requestCode));
        } catch (Exception e) {
            logger.error(e.getMessage(),e);
            throw new ParamException("请求类型不正常,请确认后重试:"+e.getMessage());
        }
        return geposAppService;
    }

}
原文地址:https://www.cnblogs.com/zhangmo/p/15566112.html