本篇文章為大家展示了怎么在Spring中引入多對(duì)象,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)成立10年來(lái),這條路我們正越走越好,積累了技術(shù)與客戶資源,形成了良好的口碑。為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、域名與空間、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。網(wǎng)站是否美觀、功能強(qiáng)大、用戶體驗(yàn)好、性價(jià)比高、打開快等等,這些對(duì)于網(wǎng)站建設(shè)都非常重要,成都創(chuàng)新互聯(lián)通過(guò)對(duì)建站技術(shù)性的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究為客戶提供一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。
1.創(chuàng)建Bean
1.1如果使用方法bean注入對(duì)象, 給@Bean添加name值.
@Bean(name="別名")
代碼樣例:
注意
下面的@Bean(name = "test01DataSource"), 可以使用applicationContext.getBean("test01DataSource") 進(jìn)行獲取.
@Primary表示 如果以type類型進(jìn)行選擇的話, 首選該Bean.
也即是說(shuō),使用applicationContext.getBean(DataSource.class) 和applicationContext.getBean("test01DataSource") 獲取到的是同一個(gè)對(duì)象.
源碼:
@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(); } }
測(cè)試代碼:
@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()); }
結(jié)果樣例:
1105282397
1105282397
793657559
1.2使用類注解進(jìn)行注入對(duì)象. @Service, @Component,添加value值進(jìn)行創(chuàng)建別名.
// 創(chuàng)建接口 public interface IBeanService { public void printInfo(); } //創(chuàng)建實(shí)例01, 并且添加上@Primary注解, 表名默認(rèn)使用這個(gè)類 @Service(value = "bean01") @Primary public class Bean01Service implements IBeanService { @Override public void printInfo() { System.out.println("This is bean 01"); } } //創(chuàng)建實(shí)例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.調(diào)用
2.1.如果需要?jiǎng)?chuàng)建局部變量, 使用applicationContext.getBean(class/name)創(chuàng)建
對(duì)于有@Primary的對(duì)象, 直接使用getBean(class)進(jìn)行調(diào)用.
applicationContext.getBean(IBeanService.class)
對(duì)于其他的Bean, 使用getBean(name)進(jìn)行調(diào)用, 并進(jìn)行類型強(qiáng)制轉(zhuǎn)換.
eg. (IBeanService) applicationContext.getBean("bean02");
2.2.如果需要?jiǎng)?chuàng)建成員變量, 使用@Autowired和 @Qualifier("別名") 進(jìn)行
對(duì)于有@Primary的對(duì)象, 直接使用@Autowired進(jìn)行調(diào)用.代碼如下
@Autowired IBeanService beanService;
對(duì)于其他的bean, 通過(guò)添加@Qualifier("別名")進(jìn)行調(diào)用, 代碼如下
@Autowired @Qualifier("bean02") IBeanService bean02Service;
上述內(nèi)容就是怎么在Spring中引入多對(duì)象,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前文章:怎么在Spring中引入多對(duì)象
文章地址:http://aaarwkj.com/article48/goophp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、域名注冊(cè)、網(wǎng)站內(nèi)鏈、網(wǎng)站策劃、網(wǎng)站制作、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)