Anbieter sind einfach eine Möglichkeit, die JAX-RS-Laufzeit zu erweitern und anzupassen. Sie können sich diese als Plugins vorstellen, die (möglicherweise) das Verhalten der Laufzeit ändern, um eine Reihe von (programmdefinierten) Zielen zu erreichen.
Anbieter sind nicht mit Ressourcenklassen identisch, sie existieren konzeptionell auf einer Ebene zwischen Ressourcenklassen und der JAX-RS-Implementierung. Wenn es hilft, können Sie sie im selben Licht wie Gerätetreiber betrachten (zwischen Benutzer und Kernel-Speicher vorhanden). Dies ist eine breite Verallgemeinerung.
Es gibt drei Klassen von Anbietern, die in der aktuellen JAX-RS-Spezifikation definiert sind. Die Gemeinsamkeit zwischen ihnen besteht darin, dass alle Anbieter durch die Annotation @Provider identifiziert werden müssen und bestimmte Regeln für die Konstruktordeklaration befolgen müssen. Abgesehen davon können verschiedene Anbietertypen zusätzliche Anmerkungen enthalten und unterschiedliche Schnittstellen implementieren.
Entitätsanbieter
Diese Anbieter steuern die Zuordnung von Datendarstellungen (wie XML, JSON, CSV) zu ihren Java-Objektäquivalenten.
Kontextanbieter
Diese Anbieter steuern den Kontext, auf den Ressourcen über @ Context-Annotationen zugreifen können.
Ausnahmeanbieter
Diese Anbieter steuern die Zuordnung von Java-Ausnahmen zu einer JAX-RS-Antwortinstanz.
Ihre Laufzeit wird mit einer Reihe vordefinierter Anbieter geliefert, die für die Implementierung einer Basisfunktionalitätsebene verantwortlich sind (z. B. für die Zuordnung zu und von XML, die Übersetzung der häufigsten Ausnahmen usw. usw.). Sie können bei Bedarf auch Ihre eigenen Anbieter erstellen.
Die JAX-RS-Spezifikation ist eine gute Referenz, um sich über diese verschiedenen Anbietertypen und deren Funktionsweise zu informieren (siehe Kapitel 4).