【发布时间】:2015-05-07 06:49:52
【问题描述】:
在 Jersey 类中,两者中哪个更合适:
- 在实例变量上
@PathParam("服务标识") 私有字符串 serviceId;
- 在方法参数上
公共响应订阅(@PathParam("service-id") String serviceId){}
我使用第一个只是因为我几乎所有的方法都需要service-id。但是,我的一位同事对这种方法提出了评论,即 Jersey 类最终是基于 servlet 的,而 servlet 不应该有状态变量。
我在JSR-311 java docs 中读到过这个
因为注入发生在对象创建时,所以使用这个 资源类字段和 bean 属性上的注释仅 支持默认的每个请求资源类生命周期。 使用其他生命周期的资源类应该只使用这个 资源方法参数注解。
由于在 web 应用中,我的 Jersey 类将遵循每个请求的资源类生命周期,我觉得第一种方法是安全的。请思考:)
【问题讨论】:
-
安全。在这种情况下,有状态意味着单例应用程序共享实例中的状态。如果您为每个请求配置了资源,则在请求实例的单次使用之外不会维护任何状态。
标签: java servlets jersey jax-rs jersey-2.0