Постачальники - це просто спосіб продовження та налаштування часу виконання JAX-RS. Ви можете вважати їх плагінами, які (потенційно) змінюють поведінку часу виконання, щоб досягти набору (визначених програмою) цілей.
Постачальники - ні такі, як класи ресурсів, вони існують концептуально на рівні між класами ресурсів та реалізацією JAX-RS. Якщо це допомагає, ви можете розглядати їх у такому ж світлі, що і драйвери пристроїв (наявні між користувачем та простором ядра). Це широке узагальнення.
Існує три класи провайдерів, визначені поточною специфікацією JAX-RS. Спільне між ними полягає в тому, що всі провайдери повинні бути ідентифіковані анотацією @Provider та дотримуватися певних правил декларації конструктора. Крім того, різні типи постачальників можуть мати додаткові примітки та реалізовувати різні інтерфейси.
Суб'єктні провайдери
Ці провайдери контролюють відображення представлених даних (наприклад, XML, JSON, CSV) на їх об'єктивні еквіваленти Java.
Контекстні провайдери
Ці провайдери контролюють контекст, до якого ресурси можуть отримати доступ через примітки @Context.
Постачальники винятків
Ці провайдери контролюють відображення виключень Java на екземпляр реакції JAX-RS.
У процесі виконання буде встановлено декілька заздалегідь заданих постачальників, які відповідають за впровадження базового рівня функціональності (наприклад, для відображення в XML і з нього, перекладу найбільш поширених винятків тощо тощо). Ви також можете створити власних провайдерів за потребою.
Специфікація JAX-RS є хорошою орієнтиром для ознайомлення з різними типами постачальників та тим, що вони роблять (див. Розділ 4).