(翻譯)JavaEE6規(guī)范 CDI教程第五部分

          原文鏈接: http://code.google.com/p/jee6-cdi/wiki/DependencyInjectionAnIntroductoryTutorial

          本部分講述使用多個(gè)@Qualifiers來(lái)進(jìn)一步區(qū)分注入類型

          在同一個(gè)注入點(diǎn)上使用多個(gè)@Qualifiers來(lái)進(jìn)一步區(qū)分

          你可以使用多個(gè)限定注解來(lái)進(jìn)一步區(qū)分你的注入目標(biāo)。

          我們定義限定注解SuperFastStandardFrameRelaySwitchingFlubber來(lái)演示這個(gè)用法。那樣的話我們就有第二個(gè)傳輸器StandardFrameRelaySwitchingFlubber和SuperFast,我們要注入的傳輸器不僅有StandardFrameRelaySwitchingFlubber,還有SuperFast

          首先我們來(lái)定義限定注解,如下:

          // 定義新的SuperFast限定注解 package org.cdi.advocacy;  
          ...
          @Qualifier
          @Retention(RUNTIME)
          @Target({TYPE, METHOD, FIELD, PARAMETER})
          public @interface SuperFast {
          }
          // 定義另一個(gè)新的StandardFrameRelaySwitchingFlubber限定注解 
          package org.cdi.advocacy;
          ...
          @Qualifier @Retention(RUNTIME)
          @Target({TYPE, METHOD, FIELD, PARAMETER})
          public @interface StandardFrameRelaySwitchingFlubber {
          }

          OK,下面的代碼是給SuperFastAtmTransport同時(shí)使用@SuperFast@StandardFrameRelaySwitchingFlubber限定注解。

          // SuperFastAtmTransport使用兩個(gè)限定注解 
          package org.cdi.advocacy;

          @SuperFast @StandardFrameRelaySwitchingFlubber
          public class SuperFastAtmTransport implements ATMTransport {
          public void communicateWithBank(byte[] datapacket) {
          System.out.println("communicating with bank via the Super Fast transport " );
          }
          }

          Ok,我們也給StandardAtmTransport加上StandardFrameRelaySwitchingFlubber限定注解。

          // StandardAtmTransport使用一個(gè)限定注解 
          package org.cdi.advocacy;

          @StandardFrameRelaySwitchingFlubber
          @Default
          public class StandardAtmTransport implements ATMTransport {
          public void communicateWithBank(byte[] datapacket) {
          System.out.println("communicating with bank via Standard transport");
          }
          }

          接下來(lái),我希望我的自動(dòng)柜員機(jī)使用SuperFast傳輸并帶有StandardFrameRelaySwitchingFlubber,我必須在注入點(diǎn)同時(shí)使用它們,如下:

          // AutomatedTellerMachineImpl更改為使用兩個(gè)限定注解 
          public class AutomatedTellerMachineImpl implements AutomatedTellerMachine {
          @Inject @SuperFast @StandardFrameRelaySwitchingFlubber
          private ATMTransport transport;
          ... deposit called
          communicating with bank via the Super Fast transport

          練習(xí):創(chuàng)建一個(gè)具有@SuperFast, @StandardFrameRelaySwitchingFlubber 和 @Alternative的傳輸器。然后使用beans.xml激活SuperFast, StandardFrameRelaySwitchingFlubber, Alternative支持。通過(guò)CDI Group郵件列表發(fā)給我你的解決方案。第一發(fā)送的將會(huì)張貼在CDI墻壁上。

          閱讀者練習(xí):更改注入點(diǎn)限定,只使用StandardAtmTransport。通過(guò)CDI Group郵件列表發(fā)給我你的解決方案。第一發(fā)送的將會(huì)張貼在CDI:墻壁上。

          待續(xù)..

          2011-07-12

          posted on 2011-07-12 10:38 kuuyee 閱讀(1875) 評(píng)論(0)  編輯  收藏 所屬分類: CDIJEE

          導(dǎo)航

          <2011年7月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          統(tǒng)計(jì)

          隨筆分類(139)

          Linux內(nèi)核

          搜索

          •  

          積分與排名

          • 積分 - 320293
          • 排名 - 178

          最新評(píng)論

          閱讀排行榜

          主站蜘蛛池模板: 涟水县| 蕲春县| 东兰县| 通化县| 四子王旗| 聂拉木县| 卓资县| 德化县| 色达县| 新源县| 荃湾区| 清水县| 临洮县| 宜宾县| 屯昌县| 南阳市| 铜鼓县| 南雄市| 泌阳县| 连云港市| 文安县| 嘉义市| 凯里市| 柳州市| 南漳县| 敖汉旗| 六盘水市| 弋阳县| 临夏市| 龙游县| 双流县| 棋牌| 修水县| 乐至县| 东丽区| 乌审旗| 翁牛特旗| 漳州市| 南平市| 沂水县| 浏阳市|