Из того, что я могу найти онлайн, состояние для Guice +, интеграция Джерси застоялась с 2008, когда кажется, что обе команды достигли тупика. Затруднение проблемы - то, что аннотации JAX-RS выполняют поле и инжекцию метода, и это не играет приятно с собственным внедрением зависимости Guice.
Несколько примеров, которые я нашел, не заходят достаточно далеко для объяснения:
Сообщение Iqbalyusuf на Джерси + Guice на Google App Engine Java страдает от большого количества шаблона (вручную получение и вызов инжектора). Я хочу связать, и инжекция должна произойти негласно с помощью аннотаций Guice.
Статья Creating Jonathan Curran УСПОКОИТЕЛЬНАЯ служба с Джерси, Guice и JSR-250 дали мне надежду, потому что это намного более актуально (2010), но пошел не далее, чем показ, как запустить сервис Джерси в Guice ServletModule. Однако нет никаких примеров выполнения никакого реального внедрения зависимости. Я предполагаю, что это оставили как осуществление для читателя. Сообщение Curran может на самом деле быть корректным первым шагом к обеспечению электричеством Guice и Джерси и таким образом, я планирую запуск с этого.
дразняще записи James Strachan:
JAX-RS работает хорошо с платформами внедрения зависимости, такими как Spring, Guice, GuiceyFruit или JBossMC - можно в основном выбрать, какой бы ни один Вы предпочитаете.
Но я не вижу доказательства, которое верно с точки зрения практика.
Что я нахожу, что недостаток является практическими примерами и объяснениями о том, как объединить аннотации JAX-RS и Guice. Например:
У кого-либо есть примеры, предпочтительно с источником, нетривиального приложения, которое комбинирует Джерси и Guice, не жертвуя один или другой в процессе? Я сохраняю эту дорогу независимо, но остатки на Джерси и списки Guice заставляют меня думать, что я повторяю работу других, которые приехали передо мной.
Я считаю, что не могу использовать инъекцию конструктора с каким-либо ресурсом, поскольку Джерси хочет контролировать это
Вы не можете использовать Внедрение конструктора guice, потому что создание ресурса управляется jersey. В этом случае вы можете использовать аннотацию jersey @Inject
перед параметром конструктора, который вы хотите ввести:
public NewsResource(@Inject NewsService service)
Я создал пример приложения Guice / Jersey / Jetty / Jackson здесь:
http://github.com/sunnygleason/j4-minimal
Если у вас есть какие-либо вопросы или предложения по улучшению Например, не стесняйтесь писать мне через github. Цель состоит в том, чтобы сделать это очень доступное введение в REST в стеке Java.
Надеюсь, это поможет - удачного дня!
-Солнечный