代码之家  ›  专栏  ›  技术社区  ›  Mike

使用Spring Boot创建bean别名

  •  1
  • Mike  · 技术社区  · 8 年前

    在SpringXML中,我可以使用 alias 元素将一个或多个别名分配给bean我想知道是否有一种Spring Boot编程方法可以做到这一点?

    用例是我有需要JMS的遗留代码 TopicConnectionFactory . 使用Spring Boot的ActiveMQ自动配置,我得到一个 主题连接工厂 自动但是,遗留代码使用静态字符串来查找bean名称,因此我需要创建一个别名,将遗留代码bean查找链接到springbootbean。

    我试过看 BeanDefinitionCustomizer 但它没有办法设置别名或bean名称。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Mike    8 年前

    好吧,一旦你有了 ConfigurableListableBeanFactory :

    @Autowired
    private ConfigurableListableBeanFactory beanFactory;
    
    @Bean
    public BeanPostProcessor jmsTopicConnFactoryAliasCreator()
    {
      return new BeanPostProcessor()
      {
         @Override
         public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException
         {
            if(bean instanceof TopicConnectionFactory)
            {
               beanFactory.registerAlias(beanName, "<LEGACY_BEAN_LOOKUP_NAME>");
            }
            return bean;
         }
      };
    }