JAX-RS / Jersey中的资源类和提供者类有什么区别?

时间:2018-10-09 19:07:29

标签: rest jersey jax-rs

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

1 个答案:

答案 0 :(得分:0)

Resource classes是用@Path注释的类,provider是我们可以扩展/实现的允许我们使用/扩展JAX-RS框架的任何其他类,即

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

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

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

可能有更多的提供程序类型,但是这些我现在想不起来。