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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

php cdi_本机CDI限定词:@Any和@Default

發(fā)布時(shí)間:2023/12/3 php 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。