在 Spring XML 中,我可以使用alias元素为 bean 分配一个或多个别名。我想知道是否有 Spring Boot 编程方式来做同样的事情?用例是我有需要 JMS 的遗留代码TopicConnectionFactory。使用 Spring Boot 的 ActiveMQ 自动配置,我TopicConnectionFactory自动获得了一个。但是,遗留代码使用静态字符串来查找 bean 名称,因此我需要创建一个别名,将遗留代码 bean 查找链接到 Spring Boot bean。我试过查看,BeanDefinitionCustomizer但它没有办法设置别名或 bean 名称。
1 回答
慕田峪4524236
TA贡献1875条经验 获得超5个赞
好的,事实证明,一旦您可以访问 a ,就有一种方法可以做到这一点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;
}
};
}
添加回答
举报
0/150
提交
取消