10

Jersey REST 服务器 [1] 上的教程提到了 Jersey servlet:

此 servlet 分析传入的 HTTP 请求并选择正确的类和方法来响应此请求。此选择基于类和方法中的注释。

当servlet“选择正确的类和方法”时,它是否每次都重新实例化该类?还是它保留每个资源类的一个实例?

这似乎很重要,因为如果这些资源类具有对存储应用程序范围状态的对象的引用,这些状态对象将与资源一起重新实例化,并且最终不会正确存储状态数据。

[1] http://www.vogella.com/articles/REST/article.html#restjersey

4

2 回答 2

17

Jersey 将为每个请求建立每个类的新实例,除非您使用@Singleton.

请参阅:https ://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e2331

于 2013-02-06T21:20:20.310 回答
1

实际上根据这篇文章,默认注释类型是从单例更改为每个请求。这意味着在每个请求都使用一个实例之前,但现在为每个请求创建新的类对象。如果您想更改它,可以使用 resourceFactory 注释。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@ResourceFactory(SingletonProvider.class)
public @interface Singleton {}

您也可以查看此链接以获取 com.sun.jersey.spi.resource JavaDoc

于 2013-02-06T21:17:17.713 回答