2011-08-19 53 views
0

我新的EJB,並有一些關於資源注入已被竊聽我一會兒。我想這是一個非常基本的概念,但我無法自己想出來。人們說,有沒有愚蠢的問題,所以這裏有雲:EJB封裝進口VS資源注入

我不明白的是包導入和資源注射的區別。我所指的區別不在於使用(它們確實以不同的方式使用),而是關於意義。爲什麼EJB不使用包導入而不是資源注入?

例如我有一個getInfoBean,它實現了接口getInfo。要在客戶端使用這個bean,我可以用@EJB查找JNDI或DI(如果客戶端部署在ACC中)。無論哪種方式,我需要指定名稱getInfo。那麼一邊不要讓進口處理這個?是不是進口的目的是指定一些名稱,以便它可以使程序知道的類或接口,它想用的?

感謝

回答

1

在您的客戶端將1)客戶端綁定到bean的具體實例和進口import some.package.getInfoBean 2)DI發生在運行時,使容器攔截對EJB的所有來電,即管理聲明式交易。

因此,編譯要求import陳述知道對哪些類建設字節碼。 DI是一個運行時功能,使JVM能夠在調用注入資源之前,之中或之後執行某些(通常很複雜的)事情。

編輯:現在,註釋被用於Java中的DI。 Neverthess,這並不意味着所有註釋都與DI有關。例如@Override不會影響運行時行爲,如註釋@Retention(value=SOURCE)所示,它僅處理源代碼。儘管@EJB註釋由@Retention(value=RUNTIME)註釋的註釋本身指示是在運行時訪問。此註釋是DI 啓用程序

+0

所以基本上是進口的東西在編譯時完成的,而DI在運行時完成的。是對的嗎? – NQC

+0

@NQC:是的,看我的編輯。 – home