Jersey @PathParam 在实例级别与方法级别
Jersey @PathParam at instance level vs at method level
穿着球衣class,两者哪个更合适:
- 在实例变量上
@PathParam("service-id")
私人字符串 serviceId;
- 关于方法参数
public 响应订阅(@PathParam("service-id") String serviceId){}
我使用第一个只是因为几乎所有方法都需要 service-id
。但是,我的一位同事对这种方法发表了评论,最终 Jersey classes 是基于 servlet 的,而 servlet 不应该有状态变量。
上读到过这个
Because injection occurs at object creation time, use of this
annotation on resource class fields and bean properties is only
supported for the default per-request resource class lifecycle.
Resource classes using other lifecycles should only use this
annotation on resource method parameters.
由于在网络应用程序中,我的 Jersey class 是 将遵循每个请求的资源 class生命周期,我觉得第一种方法是安全的。请思考:)
安全 由于只允许在请求范围内使用此注释(这样每个请求都有自己的 bean/resource 实例并且没有共享状态).
我可能会为每个方法提供完整的参数集,即使它有点重复。让您更容易一目了然地了解正在发生的事情。不过,这是一个代码风格问题,人们可以在这里有不同的意见。
这只是编码风格问题,因为此代码具有完全相同的结果。
我也更喜欢在方法中定义它,而不是在实例中定义它。
随便,编译一次,结果都是一样的! :)
穿着球衣class,两者哪个更合适:
- 在实例变量上
@PathParam("service-id") 私人字符串 serviceId;
- 关于方法参数
public 响应订阅(@PathParam("service-id") String serviceId){}
我使用第一个只是因为几乎所有方法都需要 service-id
。但是,我的一位同事对这种方法发表了评论,最终 Jersey classes 是基于 servlet 的,而 servlet 不应该有状态变量。
Because injection occurs at object creation time, use of this annotation on resource class fields and bean properties is only supported for the default per-request resource class lifecycle. Resource classes using other lifecycles should only use this annotation on resource method parameters.
由于在网络应用程序中,我的 Jersey class 是 将遵循每个请求的资源 class生命周期,我觉得第一种方法是安全的。请思考:)
安全 由于只允许在请求范围内使用此注释(这样每个请求都有自己的 bean/resource 实例并且没有共享状态).
我可能会为每个方法提供完整的参数集,即使它有点重复。让您更容易一目了然地了解正在发生的事情。不过,这是一个代码风格问题,人们可以在这里有不同的意见。
这只是编码风格问题,因为此代码具有完全相同的结果。 我也更喜欢在方法中定义它,而不是在实例中定义它。
随便,编译一次,结果都是一样的! :)