JavaEE Web JAX-RS:我可以在它的类中使用实例变量吗?

Wil*_*Dev 5 java jax-rs thread-safety

我正在寻找线程安全的 Servlet 替代方案,我发现了 JAX-RS 技术。

那么我可以像这样在它的类中使用实例变量吗(它是线程安全的):

@Path("helloworld")
public class HelloWorldResource {

    private String msg;

    @GET
    public void doSmth() {
       this.msg = "test";
    }    
}
Run Code Online (Sandbox Code Playgroud)

?

fra*_*cis 3

资源范围将默认为@RequestScope每个请求创建一个新的资源实例。

来自第 3 章 JAX-RS 应用程序、资源和子资源

@RequestScoped

默认生命周期(当不存在注释时应用)。在此范围内,为每个新请求创建资源实例并用于处理该请求。如果在请求处理中多次使用该资源,则始终将使用同一个实例。当资源是子资源在匹配期间返回多次时,可能会发生这种情况。在这种情况下,只有实例才会处理请求。

因此,只要msg不是,static就应该根据请求创建。

这也意味着在处理请求后,您将丢失资源中包含的任何状态,您想在这里解决什么用例?