背景
SpringBoot我的项目引入公司其余公共根底包,我的项目启动时Spring初始化了根底包里的Bean,其中有个Bean跟我的项目已有的Bean有抵触,影响到了服务。
计划
我的项目启动时不让Spring初始化这个有抵触的Bean。
实际
Spring 提供了BeanDefinitionRegistry
接口来操作注册的Bean列表beanDefinitionMap
。
@Beanpublic BeanDefinitionRegistryPostProcessor removeRegistryBeanPostProcessor() { return new BeanDefinitionRegistryPostProcessor() { @Override public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException { if (registry.containsBeanDefinition("要从注册列表中移除的Bean名称")) { registry.removeBeanDefinition("要从注册列表中移除的Bean名称"); } } @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { } };}