@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 + "成功注册"); }