在CDI应用程序中使用@Alternative
在許多情況下,您可能希望擁有一個(gè)以上版本的Bean,并將其用于不同的目的。 備用bean的典型理由是出于測(cè)試目的,其中備用bean提供模擬數(shù)據(jù)。 為了獲得實(shí)時(shí)數(shù)據(jù),“真實(shí)” bean必須連接到的實(shí)時(shí)系統(tǒng)的好處是遠(yuǎn)程,或者在測(cè)試場(chǎng)景中使用該時(shí)間太耗時(shí)。 因此,提供了提供靜態(tài)數(shù)據(jù)的模擬bean。
在本文中,我將建立一個(gè)示例,為購(gòu)物車提供一個(gè)模擬價(jià)格清單bean。
如何設(shè)置替代的Bean實(shí)現(xiàn)
實(shí)際和替代bean必須實(shí)現(xiàn)相同的接口。 在此示例中,它們實(shí)現(xiàn)了PriceList接口。
public interface PriceList {String priceList(); }public class LivePriceList implements PriceList {public String priceList() {// connect to price list webservice or databasereturn "Live Price List";} }用@Alternative注釋替代bean,以將其標(biāo)識(shí)為替代實(shí)現(xiàn)。
@Alternative public class MockPriceList implements PriceList {public String priceList() {// use hard code prices for testingreturn "Mock Price List";} }可以使用接口作為類型注入PriceList bean。
public class ShoppingCart {@Injectprivate PriceList priceList;public String ObtainPriceList(){return priceList.priceList();}}在此示例中,實(shí)際的PriceList bean在部署時(shí)將由CDI注入到ShoppingCart中。
使用替代豆
要使用替代豆你必須標(biāo)明的價(jià)目表豆使用的心愿在beans.xml的文件中使用的版本。
<beans ...><alternatives><class>com.readlearncode.alternatives.MockPriceList</class></alternatives></beans>指定了備用bean的全限定名。
結(jié)論
部署應(yīng)用程序后,CDI容器會(huì)將備用MockPriceList注入ShoppingCart bean。
源代碼
該示例的源代碼可以在ReadLearnCode GitHub存儲(chǔ)庫(kù)中找到。
翻譯自: https://www.javacodegeeks.com/2018/01/using-alternative-cdi-application.html
總結(jié)
以上是生活随笔為你收集整理的在CDI应用程序中使用@Alternative的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 桌面文件彻底删除用什么方法恢复如何删除电
- 下一篇: 用Priam设置Cassandra