나는 이것을 수행하는 방법에 대한 안내서로이 링크를 언급했다. https://jersey.java.net/nonav/apidocs/latest/jersey/contribs/jersey-guice/com/sun/jersey/guice/spi/container/servlet/package-summary.html저지가 라이프 사이클을 인스턴스화하고 관리하고 Guice가 주입을 수행하게하는 방법
나는 거기에 나타난 것을 따라 갔다. web.xml에
:
<listener>
<listener-class>com.oocl.ir4.doc.common.servlet.GuiceServletConfig</listener-class>
</listener>
<filter>
<filter-name>GuiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>GuiceFilter</filter-name>
<url-pattern>/rest/*</url-pattern>
</filter-mapping>
내 guice의 설정 : 실제로 내가 원하지 않는 이미 뉴저지에 의해 관리되는 자원 클래스 아래
public class GuiceServletConfig extends GuiceServletContextListener {
@Override
protected Injector getInjector() {
return Guice.createInjector(new JerseyServletModule() {
@Override
protected void configureServlets() {
Map<String, String> params = new HashMap<String, String>();
params.put(PackagesResourceConfig.PROPERTY_PACKAGES, "xxx.yyy");
serve("/rest/*").with(GuiceContainer.class, params);
}
});
}
}
은 Guice에 의해 관리된다. 그 패키지는 Guice 구성에 뉴저지에서 스캔하지만, 언 바운드입니다 : 내가 Guice는 자원을 투입 할
package xxx.zzz;
@Path("/xxx/zzz")
public class AbcResource extends Resource {
@Inject
private AbcServiceImpl abcService;
...
}
클래스는 :
package xxx.yyy;
@Singleton
public class AbcServiceImpl {
...
}
그러나, 그것은 작동하지 않습니다. NullPointerException
은 AbcResource의 abcServiceImpl에 액세스 할 때 발생합니다.
누구나 Guice 컨테이너에서 유지 관리되는 항목을 확인하는 이유 또는 확인 방법에 대한 힌트가 있습니까?
감사합니다. @condit. 시도했지만 여전히 작동하지 않는 것 같습니다. 나는 그것에 대해 더 조사 할 필요가 있다고 생각한다. –