Ein Ziel von JAX-RS 2.0 war es, CDI zu integrieren und das alte @Context
durch die übliche @Inject
Injektion zu ersetzen. Aber wenn ich mir die JSR 339 anschaue, wird das nicht erwähnt. Also, was ist eigentlich die CDI-Integration? Wäre es von Vorteil, JAX-RS mit CDI anstelle von Google Guice zu verwenden?Vorteil der Verwendung von JAX-RS 2.0 mit CDI/Weld anstelle von Guice?
Antwort
@Context
ist immer noch die offizielle Art der Injektion in JAX-RS 2.0. Die Beschreibung ist jedoch angeben, dass eine Implementierung Verwendung @Inject
neben @Context
nehmen (aus dem Abschnitt 10.2.5 der JAX-RS 2.0 EDR 3):
Implementierungen müssen keinen Gebrauch von
@Inject
oder@Resource
zu Auslöseeinspritzung von erfordern JAX-RS mit Anmerkungen versehene Felder oder Eigenschaften. Implementierungen Mai unterstützen solche Verwendung, aber sollten Benutzer über Nicht-Portabilität warnen.
Daher ist es nicht sicher, dass alle Implementierungen von JAX-RS 2.0 unterstützt @Inject
und Unvereinbarkeit könnte entstehen, wenn man will, JAX-RS 2.0-Implementierung ändern.
Ich habe ein wenig Forschung und es scheint, Jersey 2.0 hat nur Unterstützung für @Inject
zumindest.
denke ich den Vorteil bei der Verwendung @Inject
statt @Context
ist, dass es mehr im Einklang neben allen @Inject
‚s von nicht JAX-RS-Ressourcen ist ein in einem JAX-RS Web-Service haben.