上下文依賴注入 CDI 教程

fmms 12年前發布 | 48K 次閱讀 依賴注入 面向方面AOP/IoC
1、簡介

CDI - Context Dependency Injection 上下文依賴注入:Java EE 6中定義的規范標準,編號: JSR-299。定義了一系列簡化Java開發的功能。CDI已經超出一個框架的定義,升華到一種開發模型。這個開發模型不會去限制你必須將代碼分為幾層,不限制你必須寫ORM、持久化、業務代碼等,甚至不限制你到底是開發WEB程序還是客戶端程序。

CDI的思想來源于幾個開源項目:Seam、Guice、Spring However。不過CDI在集合了這幾個框架的有點之外,克服了各自的缺點。

CDI只是一個標準( Java Community Process - JCP),不是一個具體的框架,不同的應用服務器有其自己的實現,比如JBoss AS的CDI名叫Weld。

2、注入

既然名稱叫做上下文依賴注入,那么首先看看到底是怎么注入的。

· 往哪里注入(3種)
public class Checkout {
    private final ShoppingCart cart;

    @Inject
    public Checkout(ShoppingCart cart) {
        this.cart = cart;
    }
}

↑  注入到構造方法。一個類只能有一個注入的構造方法
public class Checkout {
    private ShoppingCart cart;

    @Inject
    void setShoppingCart(ShoppingCart cart) {
        this.cart = cart;
    }
}

public class Checkout {
    private @Inject ShoppingCart cart;
}

↑  注入到類屬性。不需要getter與setter!

· 注入的順序:
1)構造方法
2)類屬性
3)方法注入
4)@PostConstruct

3、會話范圍
1)@RequestScoped
2)@SessionScoped
3)@ApplicationScoped
4)@ConversationScoped
前三種可以在任何servlet中使用,conversation只能在JSF中使用。
 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!