2012-07-04 1 views
5

Одна из целей JAX-RS 2.0 состояла в том, чтобы интегрировать CDI и заменить старый @Context на общую инъекцию @Inject. Но если я смотрю на JSR 339, это не упоминается. Итак, что же такое интеграция CDI? Будет ли какое-либо преимущество использования JAX-RS с CDI вместо Google Guice?Преимущество использования JAX-RS 2.0 с CDI/Weld вместо Guice?

ответ

4

@Context по-прежнему является официальным способом впрыскивания в JAX-RS 2.0. Спецификация тем не менее утверждать, что реализация может использовать @Inject наряду @Context (из раздела 10.2.5 JAX-RS 2.0 EDR 3):

Реализации НЕ ДОЛЖЕН требовать использования @Inject или @Resource до запуска инъекции JAX-RS аннотированные поля или свойства. Реализации МОГУТ поддерживать такое использование, но ДОЛЖНЫ предупреждать пользователей о непереходности .

Поэтому он не уверен, что все реализации JAX-RS 2.0 поддерживает @Inject и несовместимость может возникнуть, если один хочет изменить JAX-RS реализации 2.0.

Я сделал небольшое исследование, и кажется, что Джерси 2.0 получил хотя бы поддержку для @Inject.

Я думаю, преимущество в использовании @Inject вместо @Context является то, что он в большей степени вместе со всеми @Inject-х лиц, не являющихся JAX-RS ресурсов можно было бы иметь в JAX-RS веб-службы.