Dostawcy są prostym sposobem na rozszerzenie i dostosowanie środowiska wykonawczego JAX-RS. Możesz myśleć o nich jako o wtyczkach, które (potencjalnie) zmieniają zachowanie środowiska wykonawczego, aby osiągnąć zestaw (zdefiniowanych przez program) celów.
Dostawcy nie są tym samym, co klasy zasobów, istnieją koncepcyjnie na poziomie pomiędzy klasami zasobów a implementacją JAX-RS. Jeśli to pomoże, możesz myśleć o nich w tym samym świetle, co o sterownikach urządzeń (istniejących między przestrzenią użytkownika a jądrem). To szerokie uogólnienie.
Istnieją trzy klasy dostawców zdefiniowane w aktualnej specyfikacji JAX-RS. Wspólną cechą między nimi jest to, że wszyscy dostawcy muszą być identyfikowani przez adnotację @Provider i przestrzegać pewnych zasad dotyczących deklaracji konstruktora. Poza tym różne typy dostawców mogą mieć dodatkowe adnotacje i będą implementować różne interfejsy.
Dostawcy jednostek
Dostawcy ci sterują mapowaniem reprezentacji danych (takich jak XML, JSON, CSV) na ich odpowiedniki obiektów Java.
Dostawcy kontekstu
Ci dostawcy kontrolują kontekst, do którego zasoby mają dostęp za pośrednictwem adnotacji @Context.
Dostawcy wyjątków
Dostawcy ci sterują mapowaniem wyjątków języka Java na instancję odpowiedzi JAX-RS.
Twoje środowisko uruchomieniowe będzie dostarczane z wieloma predefiniowanymi dostawcami, którzy będą odpowiedzialni za implementację podstawowego poziomu funkcjonalności (np. Za mapowanie do iz XML, tłumaczenie najczęstszych wyjątków itp.). W razie potrzeby możesz również utworzyć własnych dostawców.
Specyfikacja JAX-RS jest dobrym źródłem informacji na temat różnych typów dostawców i tego, co robią (patrz Rozdział 4).