開源項目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容器對象指定別名
@Autowiredprivate DefaultListableBeanFactory factory;@Beanpublic People people() {People people = new People();factory.registerSingleton("name1", people);factory.registerSingleton("name2", people);return people;}
上述方案給同一個實例對象命名了三個別名,分別是默認值people、name1、name2,這樣就可以在服務啟動后通過配置文件或其它方式動態的給bean取不同的別名。