使用Spring Boot创建豆别名

时间:2018-07-24 15:47:34

标签: java spring spring-boot

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

用例是我有需要JMS TopicConnectionFactory的旧代码。使用Spring Boot的ActiveMQ自动配置,我会自动得到一个TopicConnectionFactory。但是,遗留代码使用静态字符串来查找Bean名称,因此我需要创建一个别名,以将遗留代码Bean查找链接到Spring Boot Bean。

我尝试查看BeanDefinitionCustomizer,但是它没有设置别名或bean名称的方法。

1 个答案:

答案 0 :(得分:1)

好吧,事实证明,一旦您可以访问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;
     }
  };
}