背景

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 {        }    };}