Un obiettivo di JAX-RS 2.0 consisteva nell'introdurre il CDI e sostituire il vecchio @Context
con l'iniezione comune @Inject
. Ma se guardo il JSR 339 questo non è menzionato. Quindi, qual è in realtà l'integrazione CDI? Ci sarebbe qualche vantaggio nell'usare JAX-RS con CDI invece di Google Guice?Vantaggio dell'utilizzo di JAX-RS 2.0 con CDI/Saldatura invece di Guice?
risposta
@Context
è ancora il modo ufficiale di eseguire l'iniezione in JAX-RS 2.0. La specifica ha tuttavia affermare che un'implementazione può avvalersi di @Inject
fianco @Context
(dalla sezione 10.2.5 di JAX-RS 2.0 EDR 3):
implementazioni non deve richiedere l'uso di
@Inject
o@Resource
a iniezione grilletto Campi o proprietà annotati JAX-RS. Le implementazioni POSSONO supportare tale utilizzo ma DOVREBBE avvertire gli utenti della non-portabilità .
quindi non è certo che tutte le implementazioni di JAX-RS 2.0 supporta @Inject
, e di incompatibilità potrebbe sorgere se si vuole cambiare JAX-RS 2.0 implementazione.
Ho fatto una piccola ricerca e sembra che il Jersey 2.0 abbia appena ottenuto il supporto per lo @Inject
almeno.
Immagino che il vantaggio nell'uso di @Inject
invece di @Context
sia che è più coerente a fianco di tutte le @Inject
di risorse non JAX-RS che si avrebbero in un servizio web JAX-RS.