【发布时间】:2015-03-23 06:43:13
【问题描述】:
我正在尝试在我的项目中引入 Guice(v3.0)。我正在使用嵌入式 tomcat(v7.0.34) 和 Jersey(v1.18) 来托管休息服务。
在引入任何 Guice 依赖注入之前,我进行了以下配置
//Main Class
Context context = tomcat.addWebapp("/", new File(webappDirLocation).getAbsolutePath());
tomcat.addServlet(context, "Jersey REST Service", new ServletContainer(new DefaultResourceConfig(EntityResource.class)));
context.addServletMapping( "/rest/*", "Jersey REST Service");
tomcat.start();
tomcat.getServer().await();
//EntityResource
@Path("entity")
public class EntityResource {
final EntityService entityService;
public EntityResource()
{
this.entityService = new EntityService();
}
@Path("")
@Produces("application/json")
@GET
public Entity getEntity(){
return entityService.getEntity();
}
这很好用。我能够在 /rest/entity 上执行 GET。
在将 Guice 的构造函数注入添加到 EntityResource 之后,它看起来像这样
final EntityService entityService;
@Inject
public EntityResource(EntityService entityService)
{
this.entityService = entityService;
}
@Path("")
@Produces("application/json")
@GET
public Entity getEntity() {
return entityService.getEntity();
}
这会给出错误“在参数索引 0 处缺少构造函数公共 com.my.rest.EntityResource(com.my.service.EntityService) 的依赖项”。我猜这是因为 Guice 的构造函数注入。
【问题讨论】:
标签: servlets jersey guice embedded-tomcat-7