php cdi_本机CDI限定词:@Any和@Default
生活随笔
收集整理的這篇文章主要介紹了
php cdi_本机CDI限定词:@Any和@Default
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
php cdi
讓我們看一下CDI中的開(kāi)箱即用的限定詞
CDI規(guī)范聲明了三個(gè)限定符– @ Any,@ Default,@ New
- @Any :將其視為無(wú)所不在的限定詞。 它在那里,即使不是;-)
- @Default :顧名思義,當(dāng)沒(méi)有其他限定符時(shí),該限定符將被視為默認(rèn)限定符。 此規(guī)則的唯一例外是同時(shí)使用@Named(javax.inject)限定符
- @New :用于按需獲取bean的新實(shí)例。 新實(shí)例是與范圍無(wú)關(guān)的。 自CDI 1.1起不推薦使用
以下是一些簡(jiǎn)單的示例:
Bean(類(lèi))級(jí)別的預(yù)選賽
//Explicit qualifier not specified, hence @Default is assumedpublic class CSVParser implements Parser{ //implementation ... }//Explicit qualifier specified@XMLParser public class XMLParser implements Parser{ //implementation ... }注射點(diǎn)預(yù)選賽
public class ParsingService{@InjectParser parser //an implementation of the CSVParser class is injected (default behavior)//business logic }public class ParsingService{@Inject@XMLParserParser parser //an implementation of the XMLParser class is injected//business logic }@Any有什么特別之處?
如前所述,@ Any限定符無(wú)處不在,即無(wú)論如何它始終存在。 有趣的是,如果您明確提及此批注,它將打開(kāi)以下選項(xiàng)
- 您可以訪(fǎng)問(wèn)Bean的所有可能的實(shí)現(xiàn) public class ParsingService{@Inject@AnyInstance<Parser> parsers; //javax.enterprise.inject.Instance handles the magic behind the scenespublic void availableParsingOptions(){for(Parser parser : parsers){System.out.println("Parser implementation class: "+ parser.getConcreteImplName());System.out.println("Supported format: "+ parser.getSupportedFormat().getName());}} }
- 它不會(huì)抑制默認(rèn)bean(如果有)或任何顯式(合格)實(shí)現(xiàn)。 您仍然可以動(dòng)態(tài)查看它們(在運(yùn)行時(shí)) public class ParsingService{@Inject@AnyInstance<Parser> parsers;public Parser chooseParser(){//@XMLParser (qualifier annotation) being enforced programmaticallyParser selected = parsers.select(new XMLParserQualifier()).get();return (selected.isUnsatisfied() || selected.isAmbiguous()) ? null : selected;}//javax.enterprise.util.AnnotationLiteral project qualifiers as objectsprivate static class XMLParserQualifier extends AnnotationLiteral<XMLParser> implements XMLParser{} }
這就是快速使用默認(rèn)CDI限定符的全部。 您可能想查看我之前有關(guān)CDI中自定義限定詞基礎(chǔ)的文章之一
干杯!
翻譯自: https://www.javacodegeeks.com/2015/09/native-cdi-qualifiers-any-and-default.html
php cdi
總結(jié)
以上是生活随笔為你收集整理的php cdi_本机CDI限定词:@Any和@Default的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux前面的东西消失了(linux消
- 下一篇: php cdi_Swing应用程序中的C