我试图找出使用 jersey 和 spring 的 java REST web 服务的最佳“范围”。
我有一个这样定义的类:
@Path("/mypath")
@Component
@Scope("request") // Or should this be @Scope("singleton")
public final class MyResource {
}
我想知道的是,这应该定义为请求范围还是单例范围。我认为它应该是单例范围,因为它是无状态的。我的想法是,这将是更好的性能,因为它只创建一次,不是很大的性能提升,而是很小的提升。
但是,有人表示担心单例可能会导致性能损失/命中,因为它必须处理来自每个线程的请求,但我的想法是,由于没有锁定/同步,因此每个线程都可以调用方法没有被阻塞,所以没有瓶颈。
我想我的问题有两个方面:
单例范围是无状态 Web 服务的最佳范围吗
使用单例时是否存在性能损失,因为它必须一次处理多个线程?
谢谢。