开源项目SDK:https://github.com/mingyang66/spring-parent
个人文档:https://mingyang66.github.io/raccoon-docs/#/
spring、springboot向容器中注入bean的时候一般情况下只有一个别名,在某些特殊场景需要指定多个别名。
方案一:通过@Bean注解指定多个不同的别名
@Bean(name = {"name1", "name2"})
public People people() {
return new People();
}
上述方案可以指定多个beanname,但是有一个缺点,不可以动态的指定别名,即服务启动后通过配置文件或其它条件判定来指定不同的别名。
方案二:通过DefaultListableBeanFactory容器对象指定别名
@Autowired
private DefaultListableBeanFactory factory;
@Bean
public People people() {
People people = new People();
factory.registerSingleton("name1", people);
factory.registerSingleton("name2", people);
return people;
}
上述方案给同一个实例对象命名了三个别名,分别是默认值people、name1、name2,这样就可以在服务启动后通过配置文件或其它方式动态的给bean取不同的别名。