build()方法对JAX-RS中的Response有什么作用?

时间:2018-09-27 09:17:02

标签: java jax-rs

我发现了这样的代码:

response = Response.status(Status.OK).entity(object.toString()).build();

有人可以向我解释entity(...).build()对答复的确切作用吗?

2 个答案:

答案 0 :(得分:2)

Response无法直接实例化。它使用 Builder design pattern ,它是23种著名的GoF design patterns之一,描述了如何解决面向对象软件中反复出现的设计问题。

Builder设计模式旨在解决以下问题:

  • 一个类(相同的构建过程)如何创建复杂对象的不同表示形式?
  • 如何简化包含创建复杂对象的类?

对象创建而不是instantiating objects directly with new,而是委托给构建者,它使您可以控制构造过程的步骤。


检查类文档中的Response constructor summary。您会发现一个single protected constructor,无法直接从您的代码中调用它。

相反,您必须使用Response static methods之一来获取ResponseBuilder实例,然后从中获取Response

ResponseBuilder使您可以控制Response的构建方式,定义状态码,实体,响应头,cookie等。完成后,调用build()和它将返回一个Response实例。

让我们看一下每个步骤:

Response.status(Status.OK)         // Create a new ResponseBuilder with the supplied status
        .entity(object.toString()) // Set the response entity in the builder
        .build();                  // Create a Response instance from the ResponseBuilder

StringBuilder类是Builder设计模式用法的另一个著名示例。

答案 1 :(得分:0)

public static Response.ResponseBuilder status(int status)方法返回ResponseBuilder。使用此构建器,您可以提供Response属性,然后调用build方法来创建Response对象。 您可以在有效的Java 3rd Edition项目2中阅读有关构建器模式的更多信息。