91偷拍精品一区二区三区_欧美亚洲免费在线_日本不卡高清视频_中文字幕无码一区二区视频_日韩毛片无码一区二区三区,将夜 猫腻 小说,欢乐颂第二季,如何发布网络小说

?
    開發技術 / Technology
    您的當前位置:網站首頁 > 行業洞察 > 開發技術

    Java EE CDI 依賴注入 (@Inject) 教程

    日期:2015年2月25日  作者:zhjw  來源:互聯網    點擊:972

    在本教程中,你將會學到幾種不同的方法,用@Inject注解來實現Java EE CDI方式的依賴注入。

     

    1. 簡介

    Java EE CDI 主要使用@Inject注解來實現依賴注入,把受管理的bean注入到由容器管理的其它資源中去。在本教程中,我們將會介紹在CDI環境下幾種不同的可選策略來實現依賴注入。

    本教程基于如下環境:

    1. JDK 1.7.0.21
    2. Weld 1.1.10

    Weld 是CDI 的參考實現。

    2. 構造器依賴注入

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class SomeBean {
       
      private final Service service;
     
      @Inject
      public SomeBean(Service service){
        this.service = service;
      }
     
    }

    當CDI容器在初始化一個SomeBean類型的bean實例時,它將會查找該類的默認構造器(無參構造器)并用它來創建bean實例。但是有一個例外情況,就是當我們還有一個使用@Inject 進行了注解的構造器時,這種情況下,容器會改用有注解的構造器而不是無參構造器,并且把通過構造器參數傳入的依賴資源注入到bean實例中來。

    在上面的例子中,容器將會獲取到一個Service 的實例并把它注入到SomeBean 的注解構造器中.

    注意: 記住一個類只允許有 一個@Inject注解的構造器。
     

    3. 字段依賴注入

    1
    2
    3
    4
    5
    6
    public class SomeBean {
       
      @Inject
      private Service service;
     
    }

    這種情況下,當容器初始化一個 SomeBean類型的bean時,它會把一個正確的Service實例注入給該字段,即使該字段是一個私有字段,并且不需要有任何setter方法。

    4. 初始化方法依賴注入

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class SomeBean {
       
      private Service service;
       
      @Inject
      public void setService(Service service) {
        this.service = service;
      }
     
    }

    這種情況下,當容器初始化一個 SomeBean類型的bean時,它會調用所有由@Inject注解了的方法,并且通過方法參數的方式把依賴注入進來。

    5.  @Any 修飾符

    為了提供完全松耦合的應用,我們通常把接口注入到受管理的資源中。當我們有多個實現了給定接口的bean時該怎么辦呢?我們可以同時使用@Any修飾符和CDI的Instance接口,來把所有該接口的實現bean都注入進一個受管理的bean中:

    The @Any qualifier
      <source id="9jnsj"></source>
    • 1
      2
      3
      4
      主站蜘蛛池模板: 和平区| 东丰县| 张家川| 阿拉尔市| 合山市| 绥宁县| 曲阳县| 洛阳市| 麻城市| 塘沽区| 固原市| 黄骅市| 泰来县| 马鞍山市| 仁寿县| 蓬莱市| 桐乡市| 宜丰县| 台安县| 青河县| 饶河县| 当雄县| 广州市| 泉州市| 边坝县| 堆龙德庆县| 繁峙县| 定安县| 齐河县| 大渡口区| 揭西县| 濮阳县| 凤城市| 乃东县| 余姚市| 兰西县| 五峰| 莱芜市| 万州区| 繁峙县| 常山县|

      <small id="9jnsj"></small>
      <td id="9jnsj"></td>
        <small id="9jnsj"></small>
          <track id="9jnsj"><dl id="9jnsj"></dl></track>
          <p id="9jnsj"><tr id="9jnsj"></tr></p>
          1. <sub id="9jnsj"><tr id="9jnsj"><th id="9jnsj"></th></tr></sub>