在Spring XML中,我可以使用alias
元素为bean分配一个或多个别名。我想知道是否有Spring Boot编程方式可以做到这一点?
用例是我有需要JMS TopicConnectionFactory
的旧代码。使用Spring Boot的ActiveMQ自动配置,我会自动得到一个TopicConnectionFactory
。但是,遗留代码使用静态字符串来查找Bean名称,因此我需要创建一个别名,以将遗留代码Bean查找链接到Spring Boot Bean。
我尝试查看BeanDefinitionCustomizer
,但是它没有设置别名或bean名称的方法。
答案 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;
}
};
}