首页 > 解决方案 > JAX-RS/Jersey 中的资源类和提供者类有什么区别?

问题描述

在 Jersey/JAX-RS 我听到术语“资源类”和“提供者”。我不清楚这两者之间有什么区别。有人可以提供一些适当的解释吗?

标签: restjerseyjax-rs

解决方案


资源类是用注释的类@Path,提供者是我们可以扩展/实现的任何其他类,它们允许我们利用/扩展 JAX-RS 框架,即

  • ContainerRequestFilter
  • ContainerResponseFilter
  • MessageBodyReader
  • MessageBodyWriter
  • WriterInterceptor
  • ReaderInterceptor
  • ContextResolver
  • ExceptionMapper
  • ClientRequestFilter
  • ClientResponseFilter

除了客户端过滤器之外,所有这些提供程序类都可以@Provider在启用扫描时在服务器端进行注释并自动注册。

您可能经常听到诸如“您使用的是什么 JSON 提供程序?”之类的问题。这指的是MessageBodyReaderor MessageBodyWriter,它是一种提供者,或者更准确地说是“实体提供者”,如docs 中所述。这实际上是唯一具有自己前缀类型的提供程序类型。所有其他人都被概括为“提供者”。

可能有更多的提供者类型,但这些都是我现在能想到的。


推荐阅读