关于spring:小知识移除不需要的Spring-Bean

4次阅读

共计 632 个字符,预计需要花费 2 分钟才能阅读完成。

背景

SpringBoot 我的项目引入公司其余公共根底包,我的项目启动时 Spring 初始化了根底包里的 Bean,其中有个 Bean 跟我的项目已有的 Bean 有抵触,影响到了服务。

计划

我的项目启动时不让 Spring 初始化这个有抵触的 Bean。

实际

Spring 提供了 BeanDefinitionRegistry 接口来操作注册的 Bean 列表beanDefinitionMap

@Bean
public 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 {}};
}
正文完
 0