java引入bean代码_通过java代码装配bean
importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;/** Spring 的組件掃描默認(rèn)是不啟用的,需要顯式配置啟用組件掃描去尋找被 @Component 注解修飾的組件類,并為其創(chuàng)建 bean 實(shí)例。
**/
/** 標(biāo)記類 CDPlayerConfig 是 Spring 的配置類,通過(guò) java 代碼定義 Spring 的裝配規(guī)則。
* 該類應(yīng)該包含在Spring應(yīng)用上下文中如何創(chuàng)建bean的細(xì)節(jié)。
**/@Configurationpublic classCDPlayerConfig {/** 要在 JavaConfig 中聲明 bean ,我們需要編寫(xiě)一個(gè)方法,這個(gè)方法會(huì)創(chuàng)建所需類型的實(shí)例,然后給這個(gè)方法添加 @Bean 注解。
*
* @Bean 注解會(huì)告訴 Spring 這個(gè)方法將會(huì)返回一個(gè)對(duì)象,該對(duì)象要注冊(cè)為 Spring 應(yīng)用上下文中的 bean 。
* 方法體中包含了最終產(chǎn)生 bean 實(shí)例的邏輯。
*
* 默認(rèn),bean 的 ID 和方法名是一樣的,如下 bean 的 ID 為 sgtPeppers 。
* 如果想手動(dòng)為 bean 指定一個(gè) ID ,可以使用 @Bean 的 name 屬性,如:
* @Bean(name="lonelyHeartsClubBand") **/@BeanpublicCompactDisc sgtPeppers() {return newSgtPeppers();
}//這里是使用 Java 創(chuàng)建 bean,因此我們可以發(fā)揮 Java 提供的所有功能,只要最終生成一個(gè) CompactDisc 實(shí)例即可。例如:
@BeanpublicCompactDisc randomBeatlesCD() {
CompactDisc cd;int choice = (int) Math.floor(Math.random() * 4);switch(choice) {case 1:
cd= newSgtPeppers();break;case 2:
cd= newWhiteAlbum();break;case 3:
cd= newHardDaysNight();break;default:
cd= newRevolver();break;
}returncd;
}/** Spring 裝配方式一:
* 在JavaConfig中裝配bean的最簡(jiǎn)單方式就是引用創(chuàng)建bean的方法。
**/@BeanpublicCDPlayer cdPlayer() {//return new CDPlayer(sgtPeppers());
return new CDPlayer(newWhiteAlbum());
}/** Spring 裝配方式二:
* 當(dāng) Spring 調(diào)用 cdPlayer() 創(chuàng)建 CDPlayer bean 的時(shí)候,它會(huì)自動(dòng)裝配一個(gè) CompactDisc 到配置方法之中。
* 然后,方法體就可以按照合適的方式來(lái)使用它。
*
* 通過(guò)這種方式引用其他的 bean 通常是最佳的選擇,因?yàn)樗粫?huì)要求將 CompactDisc 聲明到同一個(gè)配置類之中。
* 在這里甚至沒(méi)有要求 CompactDisc 必須要在 JavaConfig 中聲明,
* 實(shí)際上它可以通過(guò)組件掃描功能自動(dòng)發(fā)現(xiàn)或者通過(guò) XML 來(lái)進(jìn)行配置。
* 你可以將配置分散到多個(gè)配置類、XML 文件以及自動(dòng)掃描和裝配 bean 之中,
* 只要功能完整健全即可。不管 CompactDisc 是采用什么方式創(chuàng)建出來(lái)的,
* Spring 都會(huì)將其傳入到配置方法中,并用來(lái)創(chuàng)建 CDPlayer bean 。
*
* 當(dāng)配置類中有多個(gè)同類型的 bean 時(shí),此時(shí)可以使用 @Qualifier 注解來(lái)指定參數(shù)注入的是哪一個(gè)具體的 bean 。 **/@Beanpublic CDPlayer cdPlayer(@Qualifier("randomBeatlesCD") CompactDisc compactDisc) {return newCDPlayer(compactDisc);
}/** 我們也可以采用屬性賦值的方式來(lái)注入依賴值,這里所存在的可能性僅僅受到Java語(yǔ)言的限制。
**/
//@Bean//public CDPlayer cdPlayer(@Qualifier("sgtPeppers") CompactDisc compactDisc) {//CDPlayer cdPlayer = new CDPlayer();//cdPlayer.setCd(compactDisc);//return cdPlayer;//}
}
總結(jié)
以上是生活随笔為你收集整理的java引入bean代码_通过java代码装配bean的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python文件writelines_p
- 下一篇: MATLAB仿真TSC在哪里找,-bas