2016-06-21 2 views
2

저는 의존성 삽입 프레임 워크로 Guice를 사용하고 있습니다. REST 서비스를보다 쉽게 ​​만들 수 있도록 추가 할 수있는 기능이 필요합니다.Guice with JAX-RS

guice-servlet을 살펴본 결과, HTTP 서블릿으로 경로를 안내하는 데는 효과적 이었지만, 그럴 것만 같았습니다. 주석 구문과 같은 JAX-RS가 작동 할 것으로 기대했지만 기대하지 않았습니다. .

실제로 JAX-RS를 사용하지는 않았지만 Jersey가 이에 대한 참조 구현이지만 자체 의존성 주입 프레임 워크를 사용하고 Guice와 잘 작동하지 않는 것처럼 보입니다. 또한 5MB 이상의 의존성을 지니고 있는데 이는 내가 겪고있는 일에 알 맞습니다.

Guice는 JAX-RS에 빌려주지 않는 방식으로 설계 되었습니까? 그렇다면 무엇을해야합니까?

+0

당신은 두 개의 DI 프레임 워크를 통합하는 방법을 보여 어떤 게시물을 발견 했습니까? Jersey가 인프라 전체에서 사용하기 때문에 HK2 (Jersey의 내부 DI 프레임 워크)를 완전히 없앨 수는 없습니다. 그러나 그것을 Guice와 통합하는 방법이 있습니다. 나는 그 게시물들 중 몇 개에 대답했다. 이러한 통합을 수행 할 때 나타나는 유일한 문제점은 사람들이 Google App Engine을 사용할 때입니다. 저는 GAE를 사용하지 않기 때문에이 문제를 결코 탐색 할 수 없었습니다. –

+1

@peeskillet - 나의 질문은 guice-jersey 주변에 있지 않다. 말하자면, 나는 옳은 일을하고 있는지 아닌지에 관해서 ... 이것은 내가 쉽게 생각할 수있는 것이고 나는 그것을하는 monolith 의존성 - 그것은 나를 위해 붉은 깃발을 올렸다. 그러므로 질문한다. – Cheetah

+1

여러 응용 프로그램에서 Guice + Jersey를 해봤으며 매우 만족합니다! 그래서 네, 그게 옳은 일이라고 말하고 싶습니다. – Jorn

답변

4

아마도 guice-servlet 모듈이 잘못 생각한 것 같습니다. Guice는 DI 프레임 워크입니다. 기간. guice-servlet 모듈의 실제 목표는 서블릿과 필터의 바로 가기 선언을 제공하지 않고 요청세션에 대한 지원을 제공합니다. 그 좋은 shorcut 선언은 syntatic 설탕입니다.

Java에서 JAX-RS 구현을 선택하는 것은 다소 의문의 여지가 있습니다. 몇 가지 옵션이 있습니다 (Jersey, Resteasy, Spring ...). 전체 JavaEE로 간다면 선택할 필요가 없습니다. 주석 (및 DI)을 상자 밖으로 사용하기 만하면됩니다.

JavaEE 서버 (Tomcat과 같은 웹 서버 또는 Android 앱과 같은 다른 멋진 서버)를 사용하지 않는 경우 구현을 선택해야합니다. 당신이 DI를 사용하고 있다면 (내가 추천하는), 한 번 더 결정을 내려야합니다.

JavaEE를 사용하지 않고 JAX-RS 및 종속성 삽입을 사용하여 일부 REST API를 구현하려고합니다. 너는 약간 연구를하고 Jersey와 Guice를 선택하게된다. 좋은 선택, 나는 나의 마지막 프로젝트에서도 그것들을 선택했다. 예, 저지의 의존성 그래프는 조금 비대 해졌습니다. 나는 그것이 더 좋을 수 있음을 안다.

이제 Jersey에서 자체 DI 프레임 워크 (HK2) 인 을 사용하기 때문에 문제를 함께 해결하는 방법이 있습니다..

Jersey-Guice 통합에 관한 많은 참고 자료가 있습니다. 최선의 방법은 Guice HK2 bridge입니다.

무엇을 원하십니까? SO에 대한 직접적인 참조가 필요하십니까? 문제 없습니다, 여기 좋은 것이 있습니다. 대답을 upvote하는 것을 잊지 마십시오. ;-)

+0

jersey-guice bridge는 guice 3.0에 따라 다릅니다. guice 4.0에서 작동하는 것이 있는지 궁금합니다. – nagylzs