Jednym z celów JAX-RS 2.0 było zintegro- wanie CDI i zastąpienie starego @Context
wspólnym wtryskiem @Inject
. Ale jeśli spojrzę na JSR 339, to nie jest wspomniane. Czym właściwie jest integracja CDI? Czy jest jakaś korzyść z używania JAX-RS z CDI zamiast Google Guice?Zaleta korzystania z JAX-RS 2.0 z CDI/Weld zamiast Guice?
Odpowiedz
@Context
to nadal oficjalny sposób wykonywania iniekcji w JAX-RS 2.0. Specyfikacja ma jednak stwierdzić, że implementacja może skorzystać z @Inject
obok @Context
(z sekcją 10.2.5 z JAX-RS 2.0 EDR 3):
Wdrożenia nie może wymagać użycia
@Inject
lub@Resource
do wtrysk wyzwalaczem Adnotowane pola lub właściwości JAX-RS. Wdrożenia MOGĄ wspierać takie użycie, ale POWINIEN ostrzegać użytkowników o braku możliwości przeniesienia ich na numer .
Dlatego nie ma pewności, że wszystkie implementacje JAX-RS 2.0 obsługuje @Inject
, a niezgodność może pojawić się, jeśli chce się zmienić JAX-RS wdrażania 2.0.
Zrobiłem małe badania i wygląda na to, że Jersey 2.0 otrzymał wsparcie przynajmniej na @Inject
.
Chyba przewagę w użyciu @Inject
zamiast @Context
jest to, że jest bardziej spójna obok wszystkich „s of non JAX-RS zasobów należałoby w JAX-RS internetowej służbie @Inject
.