@After
  public void tearDown() {
    final ConfigurableApplicationContext ctx =
        (ConfigurableApplicationContext) Registry.getApplicationContext();
    final DefaultListableBeanFactory beanFactory =
        (DefaultListableBeanFactory) ctx.getBeanFactory();

    beanFactory.removeBeanDefinition(PROCEDURAL_ACTION_ID);
    beanFactory.removeBeanDefinition(JOURNAL_ID);

    processDefinitionsCache.clear();
  }
  @Override
  public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
      throws BeansException {

    if (!(beanFactory instanceof DefaultListableBeanFactory)) {
      log.error("if speed up spring, bean factory must be type of DefaultListableBeanFactory");
      return;
    }

    DefaultListableBeanFactory listableBeanFactory = (DefaultListableBeanFactory) beanFactory;

    for (String beanName : listableBeanFactory.getBeanDefinitionNames()) {
      BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName);

      // 如果匹配模式 就移除掉
      if (needRemove(beanName, beanDefinition)) {
        listableBeanFactory.removeBeanDefinition(beanName);
        continue;
      }

      // 否则设置为lazy
      if (needLazyInit(beanName)) {
        beanDefinition.setLazyInit(true);
      }
    }
  }
  private boolean reconfigureBean(
      DefaultListableBeanFactory beanFactory, Class<?> beanClass, String beanName) {
    Object serviceConnector = this.cloud.getSingletonServiceConnector(beanClass, null);
    beanFactory.registerSingleton(getServiceBeanName(), serviceConnector);
    beanFactory.removeBeanDefinition(beanName);
    beanFactory.registerAlias(getServiceBeanName(), beanName);

    return true;
  }
 /**
  * 动态注册bean
  *
  * @author JohnGao
  */
 public <T> void register(String beanName, Class<T> classType, Map<String, String> values) {
   ConfigurableApplicationContext configurableApplicationContext =
       (ConfigurableApplicationContext) aContext;
   DefaultListableBeanFactory defaultListableBeanFactory =
       (DefaultListableBeanFactory) configurableApplicationContext.getBeanFactory();
   if (defaultListableBeanFactory.isBeanNameInUse(beanName)) {
     defaultListableBeanFactory.removeBeanDefinition(beanName);
     logger.info("beanName-->" + beanName + "成功删除");
   }
   BeanDefinitionBuilder beanDefinitionBuilder =
       BeanDefinitionBuilder.genericBeanDefinition(classType);
   for (String key : values.keySet()) beanDefinitionBuilder.addPropertyValue(key, values.get(key));
   defaultListableBeanFactory.registerBeanDefinition(
       beanName, beanDefinitionBuilder.getRawBeanDefinition());
   logger.info("beanName-->" + beanName + "成功注册");
 }