php cdi_本机CDI限定词:@Any和@Default
生活随笔
收集整理的這篇文章主要介紹了
php cdi_本机CDI限定词:@Any和@Default
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
php cdi
讓我們看一下CDI中的開箱即用的限定詞
CDI規范聲明了三個限定符– @ Any,@ Default,@ New
- @Any :將其視為無所不在的限定詞。 它在那里,即使不是;-)
- @Default :顧名思義,當沒有其他限定符時,該限定符將被視為默認限定符。 此規則的唯一例外是同時使用@Named(javax.inject)限定符
- @New :用于按需獲取bean的新實例。 新實例是與范圍無關的。 自CDI 1.1起不推薦使用
以下是一些簡單的示例:
Bean(類)級別的預選賽
//Explicit qualifier not specified, hence @Default is assumedpublic class CSVParser implements Parser{ //implementation ... }//Explicit qualifier specified@XMLParser public class XMLParser implements Parser{ //implementation ... }注射點預選賽
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限定符無處不在,即無論如何它始終存在。 有趣的是,如果您明確提及此批注,它將打開以下選項
- 您可以訪問Bean的所有可能的實現 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());}} }
- 它不會抑制默認bean(如果有)或任何顯式(合格)實現。 您仍然可以動態查看它們(在運行時) 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{} }
這就是快速使用默認CDI限定符的全部。 您可能想查看我之前有關CDI中自定義限定詞基礎的文章之一
干杯!
翻譯自: https://www.javacodegeeks.com/2015/09/native-cdi-qualifiers-any-and-default.html
php cdi
總結
以上是生活随笔為你收集整理的php cdi_本机CDI限定词:@Any和@Default的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux前面的东西消失了(linux消
- 下一篇: java jpa 异步编程_异步处理时的