private void registerBeanConfigsWithRegistry(BeanDefinitionRegistry registry) {
    for (BeanConfiguration bc : beanConfigs.values()) {
      String beanName = bc.getName();
      if (LOG.isDebugEnabled()) {
        LOG.debug("[RuntimeConfiguration] Registering bean [" + beanName + "]");
        if (LOG.isTraceEnabled()) {
          PropertyValue[] pvs = bc.getBeanDefinition().getPropertyValues().getPropertyValues();
          for (PropertyValue pv : pvs) {
            LOG.trace(
                "[RuntimeConfiguration] With property ["
                    + pv.getName()
                    + "] set to ["
                    + pv.getValue()
                    + "]");
          }
        }
      }

      if (registry.containsBeanDefinition(beanName)) {
        removeBeanDefinition(registry, beanName);
      }

      registry.registerBeanDefinition(beanName, bc.getBeanDefinition());
      registerBeanAliases(registry, beanName);
    }
  }
 public BeanConfiguration addAbstractBean(String name) {
   BeanConfiguration bc = new DefaultBeanConfiguration(name);
   bc.setAbstract(true);
   registerBeanConfiguration(name, bc);
   return bc;
 }
 public void addBeanConfiguration(String beanName, BeanConfiguration beanConfiguration) {
   beanConfiguration.setName(beanName);
   registerBeanConfiguration(beanName, beanConfiguration);
 }