您好,登錄后才能下訂單哦!
本篇文章為大家展示了怎么在Spring中引入多對象,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
1.創建Bean
1.1如果使用方法bean注入對象, 給@Bean添加name值.
@Bean(name="別名")
代碼樣例:
注意
下面的@Bean(name = "test01DataSource"), 可以使用applicationContext.getBean("test01DataSource") 進行獲取.
@Primary表示 如果以type類型進行選擇的話, 首選該Bean.
也即是說,使用applicationContext.getBean(DataSource.class) 和applicationContext.getBean("test01DataSource") 獲取到的是同一個對象.
源碼:
@Configuration public class DataSourceConfig { @Bean(name = "test01DataSource") @Primary @ConfigurationProperties(prefix = "spring.datasource.test01") public DataSource getTest01DataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "test02DataSource") @ConfigurationProperties(prefix = "spring.datasource.test02") public DataSource test02DataSource() { return DataSourceBuilder.create().build(); } }
測試代碼:
@Autowired ApplicationContext applicationContext; @Test public void testDataSourceHashCode() { System.out.println(applicationContext.getBean(DataSource.class).hashCode()); System.out.println((applicationContext.getBean("test01DataSource")).hashCode()); System.out.println((applicationContext.getBean("test02DataSource")).hashCode()); }
結果樣例:
1105282397
1105282397
793657559
1.2使用類注解進行注入對象. @Service, @Component,添加value值進行創建別名.
// 創建接口 public interface IBeanService { public void printInfo(); } //創建實例01, 并且添加上@Primary注解, 表名默認使用這個類 @Service(value = "bean01") @Primary public class Bean01Service implements IBeanService { @Override public void printInfo() { System.out.println("This is bean 01"); } } //創建實例02, @Service(value = "bean02") public class Bean02Service implements IBeanService { @Override public void printInfo() { System.out.println("This is bean 02"); } } @RunWith(SpringRunner.class) @SpringBootTest public class IBeanServiceTest { @Autowired ApplicationContext applicationContext; // create default bean. @Autowired IBeanService beanService; @Autowired @Qualifier("bean01") IBeanService bean01Service; @Autowired @Qualifier("bean02") IBeanService bean02Service; @Test public void printInfo() { // create bean01 IBeanService bean01 = (IBeanService) applicationContext.getBean("bean01"); // create bean02 IBeanService bean02 = (IBeanService) applicationContext.getBean("bean02"); bean01.printInfo(); bean02.printInfo(); // create default bean, and it is bean01 applicationContext.getBean(IBeanService.class).printInfo(); } @Test public void printInfoThroughAutowired() { beanService.printInfo(); bean01Service.printInfo(); bean02Service.printInfo(); } }
2.調用
2.1.如果需要創建局部變量, 使用applicationContext.getBean(class/name)創建
對于有@Primary的對象, 直接使用getBean(class)進行調用.
applicationContext.getBean(IBeanService.class)
對于其他的Bean, 使用getBean(name)進行調用, 并進行類型強制轉換.
eg. (IBeanService) applicationContext.getBean("bean02");
2.2.如果需要創建成員變量, 使用@Autowired和 @Qualifier("別名") 進行
對于有@Primary的對象, 直接使用@Autowired進行調用.代碼如下
@Autowired IBeanService beanService;
對于其他的bean, 通過添加@Qualifier("別名")進行調用, 代碼如下
@Autowired @Qualifier("bean02") IBeanService bean02Service;
上述內容就是怎么在Spring中引入多對象,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。