2016-02-29 165 views
2

我試圖讓分類/結構/語義/任何有關的JavaEE全依賴注入子系統,我有點糊塗了明確的高層次的理解依賴注入。需要澄清有關的JavaEE

我已經看了很多文章,規格和書籍(的部分),而這是我得到:

  • 控制反轉(IoC)是一種編程實踐
  • 依賴注入(DI)是一個遵循IoC(服務定位器是另一個示例)的模式
  • 上下文和依賴注入(CDI)是一種Java服務,它實現了DI以及一些附加功能l IKE上下文範圍等
  • 資源注射經由@Resource註解爲(老式?只是不同)的方式注入JNDI名稱空間中註冊的資源

我的問題是:

  1. 以任何方式任何先前點錯了嗎?
  2. 在這個 「圖片」,你在哪裏@EBJ@PersistenceUnit@PersistenceContext ...注射搭配自己?我的意思是,這些是一些注射機制,但他們不是資源注射,也不是CDI ......我說得對嗎?它們是否屬於一些特定的總括術語,或者他們剛剛在沒有進一步分類的情況下添加?
+0

EJB = Enterprise Java Beans,@Persistence註釋是指JPA;都是其他規格,總是與JSR規範(CDI是JSR 346),以瞭解情況 – fantarama

+0

@fantarama我知道代表什麼EJB和JPA的,我在問如何詮釋這些相關的「DI Java生態系統」。 –

+0

由於此註釋是在其他規格中定義的,因此它們與CDI無關。完整的Java EE 7規範提供了所有這個jsr,因此jee7實現必須實現所有這一切。正如我所說的看單獨的jsr來查看上下文和關係(如EJB事務傳播到CDI bean) – fantarama

回答

1

@EJB是Enterprise Java Beans註釋,@Persistence註釋是指JPA。 兩者都在不同的JSR上定義,因此具有不同於CDI的目的,如果兩者都使用IoC模式。

EJB和CDI都緊密聯繫在一起,因爲一個EJB也是一個CDI豆,但要真正瞭解你必須專注於單一的JSR規範JaveEE技術之間的關係。

例如JPA是Spring Hibernate實現的獨立規範,與CDI無關,但在JavaEE上下文中,您可以使用實體驅動域模式並使JPA實體也是CDI bean。