JavaRESTAPI中的资源实例

JavaRESTAPI中的资源实例,java,web-services,rest,restful-url,Java,Web Services,Rest,Restful Url,我有一个JavaRESTAPI。我想知道的是: 假设一个特定的客户端(例如,名为X的人正在使用计算机Y)对同一uri进行三次调用。(例如)。此外,假设资源有一个非静态计数器 class ResourceA{ int count = 0; @Get public Response service(){ count++; //return count below } } 现在,调用方是否对所有三个调用都得到相同的响应: 1

我有一个JavaRESTAPI。我想知道的是:

假设一个特定的客户端(例如,名为X的人正在使用计算机Y)对同一uri进行三次调用。(例如)。此外,假设资源有一个非静态计数器

class ResourceA{
     int count = 0;

     @Get
     public Response service(){
        count++;
        //return count below
     }
}
现在,调用方是否对所有三个调用都得到相同的响应:

1
或者,第一次呼叫的呼叫者获得
1
,第二次呼叫的呼叫者获得
2
,第三次呼叫的呼叫者获得
3


对你们中的一些人来说,这可能是显而易见的,但对我来说并非如此。感谢您的帮助。

假设您使用的是正确遵循JAX-RS规范的东西

3.1.1生命周期和环境

默认情况下,将为对该资源的每个请求创建一个新的资源类实例。首先 调用构造函数(见第3.1.2节),然后调用 注入依赖项(参见第3.2节),然后 方法(参见第3.3节)被调用,最后生成对象 可用于垃圾收集。一个实现可以提供其他功能 资源类生命周期,指定这些生命周期的机制在 本规范的范围。例如,基于 控制框架反转可能支持整个生命周期 该框架提供的选择

因此,您的问题的答案是,当为每个请求启动类时,所有呼叫者都将收到
1


有关JAX-RS规范,请参阅。

默认情况下,JAX-RS资源是请求范围,这意味着它将为每个请求创建新实例

要处理具有相同资源实例的多个请求,可以使用注释@Singleton标记资源(本例中为ResourceA类)。
标记为Singleton将使ResourceA类的输出在第一次请求时为1,在第二次请求时为2,依此类推。

我做了一些研究,试图确认您的答案,但我无法确定。您基本上是说为每个调用创建一个对象。如果我有一百万用户呢?这似乎效率很低。如果资源类没有构造函数(如我的示例中所示),该怎么办。每个用户是否仍然看到
0
?我只能对规范说话。您忽略了正在运行的容器和更多信息。