protected Object doGetBean(BeanDefinitionBase bd){ if(bd.isSingleton()){ Object instance = bd.getInstance(); if(null == instance) { synchronized (bd.getSingletonLock()) { if(null == (instance = bd.getInstance())) { instance = doCreateBean(bd); } } } return instance; }else{ return doCreateBean(bd); } }