5
JAX-RS 2.0的一個目標是整合CDI並用普通的@Inject
注射替代舊的@Context
。但是如果我看一下JSR 339這裏沒有提到。那麼CDI實際上是什麼?使用CDI代替Google Guice的JAX-RS會有什麼優勢?使用JAX-RS 2.0與CDI/Weld而不是Guice的優勢?
JAX-RS 2.0的一個目標是整合CDI並用普通的@Inject
注射替代舊的@Context
。但是如果我看一下JSR 339這裏沒有提到。那麼CDI實際上是什麼?使用CDI代替Google Guice的JAX-RS會有什麼優勢?使用JAX-RS 2.0與CDI/Weld而不是Guice的優勢?
@Context
仍然是在JAX-RS 2.0中進行注射的官方方式。然而,規範並指出一種實施方式可以利用@Inject
旁邊@Context
(從JAX-RS 2.0 EDR 3的部分10.2.5):
實現必須不要求使用
@Inject
或@Resource
到 觸發注射的JAX-RS註釋的字段或屬性。 實現可以支持這種用法,但應該警告用戶關於不可移植性的 。
因此,這是不能確定JAX-RS 2.0的所有實現支持@Inject
,如果一個人想改變JAX-RS 2.0的實現可能出現不兼容。
我做了一點研究,看來澤西島2.0至少得到了@Inject
的支持。
我猜測使用@Inject
而不是@Context
的好處在於,它與JAX-RS網絡服務中的非JAX-RS資源的所有@Inject
一致性更好。