Из того, что я могу найти в Интернете, уровень интеграции Guice + Jersey не изменился с 2008 года, когда оказалось, что обе команды зашли в тупик. Суть проблемы заключается в том, что аннотации JAX-RS выполняют внедрение полей и методов, и это не очень хорошо сочетается с собственным внедрением зависимостей Guice.
Несколько примеров, которые я нашел, не позволяют понять достаточно:
Сообщение Iqbalyusuf на Джерси + Guice на Google App Engine Java страдает от множества шаблонов (получение и вызов инжектора вручную). Я хочу, чтобы связывание и инъекция происходили за кулисами посредством аннотаций Guice.
Статья Джонатана Керрана Создание службы RESTful с помощью Jersey, Guice и JSR-250 дало мне надежду, потому что это намного более актуально (2010), но не пошло дальше, чем показ того, как запустить сервис Джерси внутри модуля Guice ServletModule. Тем не менее, нет примеров того, как можно внедрять реальные зависимости. Я полагаю, что это было оставлено в качестве упражнения для читателя. Фактически, пост Куррана может быть правильным первым шагом к подключению Гиса и Джерси, и поэтому я планирую начать с этого.
мучительно Джеймс Страхан пишет :
JAX-RS хорошо работает с зависимостями
каркасы для инъекций, такие как Spring,
Guice, GuiceyFruit или JBossMC - вы
в основном можно выбрать тот, который вы
предпочитать.
Но я не вижу доказательств того, что это правда с точки зрения практикующего.
Чего мне не хватает, так это практических примеров и объяснений о том, как комбинировать аннотации JAX-RS и Guice. Например:
- Мне кажется, я не могу использовать инжектор конструктора с любым ресурсом, поскольку Джерси хочет это контролировать
- Я не уверен, смогу ли я объединить @Inject с @PathParam, @QueryParam и др.
- Как использовать внедрение в реализации MessageBodyWriter
Есть ли у кого-нибудь примеры, предпочтительно с источником, нетривиального применения, которое объединяет Джерси и Гиса, не жертвуя тем или иным процессом? Я продолжаю в том же духе, но кусочки в списках Джерси и Гиса заставляют меня думать, что я повторяю работу тех, кто был до меня.