2

我试图找出使用 jersey 和 spring 的 java REST web 服务的最佳“范围”。

我有一个这样定义的类:

@Path("/mypath")
@Component
@Scope("request")  // Or should this be @Scope("singleton")
public final class MyResource {

}

我想知道的是,这应该定义为请求范围还是单例范围。我认为它应该是单例范围,因为它是无状态的。我的想法是,这将是更好的性能,因为它只创建一次,不是很大的性能提升,而是很小的提升。

但是,有人表示担心单例可能会导致性能损失/命中,因为它必须处理来自每个线程的请求,但我的想法是,由于没有锁定/同步,因此每个线程都可以调用方法没有被阻塞,所以没有瓶颈。

我想我的问题有两个方面:

  1. 单例范围是无状态 Web 服务的最佳范围吗

  2. 使用单例时是否存在性能损失,因为它必须一次处理多个线程?

谢谢。

4

0 回答 0