最好的选择是使用Spring之类的服务将服务注入Resource.在您的资源中为特定服务添加setter使其可用于各种范围.以下tutorial详细说明了如何使用Spring和Jersey.以下是完成这项工作所需的各个步骤的示例.但是,专门回答您的问题的“最佳实践”是允许Spring管理特定服务的“有状态”或“作用域”.
简单服务豆
public class SimpleBean {
private int counter;
public String sayHello() {
return Integer.toString(counter++);
}
}
简单的JAX-RS资源
public class HelloWorldResource {
private SimpleBean simpleBean;
public void setSimpleBean(SimpleBean simpleBean) {
this.simpleBean = simpleBean;
}
@GET @Path("/Hello") @Produces(MediaType.APPLICATION_JSON)
public String sayHello() {
return "{\"Hello\": \"" + this.simpleBean.sayHello() + "\"}";
}
}
简单的Spring applicationContext.xml,请注意Bean和Resource的“作用域”.这定义了这些对象的状态.