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

背景

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理