日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

本地CDI限定词:@Any和@Default

發布時間:2023/12/3 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 本地CDI限定词:@Any和@Default 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

讓我們看一下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

總結

以上是生活随笔為你收集整理的本地CDI限定词:@Any和@Default的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。