Я уже видел the following question о том, как вводить @Context
зависимостей в конструкторы ресурса Джерси. Но мой вопрос немного другой - я бы хотел ввести строку @PathParam
. У меня есть класс, похожий на следующее:Как я могу смешать инъекцию Guice и Jersey?
@Path("foo/{fooId}/bar")
public class BarResource {
@Inject
public BarResource(@PathParam("fooId") String foo, Service service) {
...
}
...
}
Service
впрыскивается устраивало Guice, но сегмент пути всегда нуль. Это меня действительно удивляет; если бы я предположил, что Гис громко взорвался бы, жалуясь на неразрешимую зависимость.
Как я могу ввести параметр пути таким образом? Я бы предпочел избегать полевой инъекции для того, чтобы эти классы ресурсов были подвергнуты тестированию.
Я не уверен, что вы имеете в виду, говоря, что это не в контексте обработки запроса. Он не связан как Singleton; когда я трачу его в отладчике, конструктор действительно вызывается по HTTP-запросу. Из документов Джерси: «Ресурсы JAX-RS управляются в области запроса по умолчанию, что означает, что для каждого запроса создается новый ресурс». –
Кроме того, я могу ввести 'UriInfo' и получить доступ к этому сегменту из fooId. Но это беспорядочно, и я хотел бы сохранить этот конструктор как POJO-ish, насколько это возможно. Следовательно, я хотел бы знать, есть ли способ использовать аннотацию '@ PathParam', как предполагалось. –
@TomG Кажется, поставщик ресурсов по умолчанию не разрешает '@ PathParam'. –