(翻譯)JavaEE6規范 CDI教程第二部分

          (譯)JavaEE6規范 CDI教程第二部分

          kuuyee  |  2011-06-11  |  JEE   CDI  

          本部分講述@Inject@Produces

          使用@Inject注入構造器參數和變量域

          你能夠注入變量域、構造器參數和setter方法(或者任何真實的方法)

          下面是變量域注入的例子:

          // AutomatedTellerMachineImpl.transport 使用@Inject來注入變量域transport
          ...
          public class AutomatedTellerMachineImpl implements AutomatedTellerMachine {
          @Inject
          private ATMTransport transport;

          Example 2. AutomatedTellerMachineImpl.transport 使@Inject
          ...
          public class AutomatedTellerMachineImpl implements AutomatedTellerMachine {
          @Inject
          public AutomatedTellerMachineImpl(ATMTransport transport) {
          this.transport = transport;
          }

          這種靈活性讓你創建的類能夠容易的單元測試。

          使用簡單@Produces

          如果你創建的對象可能很復雜,這時候你可以委托一個工廠類來創建實例,而不是依賴于構造器。這種情況在CDI中你可以在你的工廠類中使用@Produces注解,例子如下:

          下面是變量域注入的例子:

          //TransportFactory.createTransport 使用@Produces定義一個工廠方法 
          package org.cdi.advocacy;

          import javax.enterprise.inject.Produces;
          public class TransportFactory {
          @Produces ATMTransport createTransport() {
          System.out.println("ATMTransport created with producer");
          return new StandardAtmTransport();
          }
          }

          工廠方法能夠使用限定詞就像類描述一樣。在這個例子中我們沒有使用限定詞。AutomatedTellerMachineImpl不需要指定任何特定的限定詞。下面例子的AutomatedTellerMachineImpl接收了一個簡單生產者。

          //AutomatedTellerMachineImpl.transport 使用@Inject來注入構造器參數 

          import javax.inject.Inject;
          import javax.inject.Named;
          @Named("atm")
          public class AutomatedTellerMachineImpl implements AutomatedTellerMachine {
          @Inject
          private ATMTransport transport;
          ...

          運行AtmMain來查看輸出,看看是否和你的理解一致。 Output

          ATMTransport created with producer deposit called communicating with bank via Standard transport

          待續..

          2011-06-11

          posted on 2011-06-17 11:10 kuuyee 閱讀(2101) 評論(0)  編輯  收藏 所屬分類: CDIJEE

          導航

          <2011年6月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          統計

          隨筆分類(139)

          Linux內核

          搜索

          •  

          積分與排名

          • 積分 - 320260
          • 排名 - 178

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 清苑县| 宝清县| 武义县| 阿图什市| 同心县| 广东省| 德惠市| 枣阳市| 武胜县| 安多县| 合阳县| 崇礼县| 博客| 广西| 景东| 武功县| 石景山区| 特克斯县| 潼关县| 临潭县| 江口县| 东兰县| 桐庐县| 深泽县| 炎陵县| 报价| 揭阳市| 中超| 休宁县| 井研县| 延庆县| 图们市| 合川市| 读书| 潞城市| 河间市| 铁岭县| 东辽县| 卓资县| 彩票| 五家渠市|