使用JAX-RS 2.0和CDI/Weld代替Guice的优势?

dea*_*mon 5 java jax-rs guice cdi weld

JAX-RS 2.0的一个目标是整合CDI并用旧的替代@Context普通@Inject注射.但是如果我看一下JSR 339,就没有提到.那么CDI整合究竟是什么呢?将JAX-RS与CDI而不是Google Guice一起使用是否有任何优势?

uld*_*all 4

@Context仍然是 JAX-RS 2.0 中进行注入的官方方式。@Inject然而,该规范确实指出,实现可以同时使用@Context(来自 JAX-RS 2.0 EDR 3 的第 10.2.5 节):

\n\n
\n

实现不得要求使用@Inject@Resource触发 JAX-RS 注释的 \xef\xac\x81 字段或属性的注入。\n 实现可以支持此类用法,但应警告用户不可移植性。

\n
\n\n

因此,不确定 JAX-RS 2.0 的所有实现都支持@Inject,并且如果想要更改 JAX-RS 2.0 实现,可能会出现不兼容性。

\n\n

我做了一些研究,看来 Jersey 2.0 至少得到了支持@Inject

\n\n

@Inject我想使用而不是的优点@Context是它与@InjectJAX-RS Web 服务中拥有的所有非 JAX-RS 资源更加一致。

\n