谁能向我解释什么是 JAX-RS 提供者以及“@Provider”注释的作用?我一直在阅读文档,但我无法理解。
如果存在为传入请求提供服务的资源类,提供者会做什么?当我创建一个持久性资源类(不是每个请求的那个)时,它们与单例资源类有什么不同?或者这些类也是提供者?

最佳答案

提供程序是扩展和定制 JAX-RS 运行时的一种简单方式。您可以将它们视为(可能)改变运行时行为的插件,以实现一组(程序定义的)目标。

提供者是 不是 与资源类相同,它们在概念上存在于资源类和 JAX-RS 实现之间的级别。如果有帮助,您可以将它们视为与设备驱动程序(存在于用户空间和内核空间之间)相同的角度。这是一个广泛的概括。

当前的 JAX-RS 规范定义了三类提供程序。它们之间的共同点是所有提供者都必须通过@Provider 注解进行标识,并遵循一定的构造函数声明规则。除此之外,不同的提供者类型可能会有额外的注解,并且会实现不同的接口(interface)。

实体提供者

这些提供程序控制数据表示(如 XML、JSON、CSV)到它们的 Java 对象等价物的映射。

上下文提供者

这些提供程序控制资源可以通过 @Context 注释访问的上下文。

异常提供者

这些提供程序控制 Java 异常到 JAX-RS 响应实例的映射。

您的运行时将附带许多预定义的提供程序,这些提供程序将负责实现基本级别的功能(例如,映射到 XML 和从 XML 映射,转换最常见的异常等)。您还可以根据需要创建自己的提供程序。

JAX-RS specification 是阅读这些不同提供程序类型及其功能的很好引用(参见第 4 章)。

关于java - JAX-RS 中的 Provider 是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13557442/

10-13 02:41