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