java Spring ResponseEntity:使用构造函数还是静态构建器?

vyswwuz2  于 2023-04-10  发布在  Java
关注(0)|答案(3)|浏览(92)

在Sping Boot RestController中,我使用springframework类ResponseEntity返回端点调用的响应。
我最近发现有两种方法可以示例化这个类。

使用构造函数:

response = new ResponseEntity<MyDto>(myDto, myHeaders, HttpStatus.OK);

使用静态构建器:

response = ResponseEntity.ok().headers(myHeaders).body(myDto);

结果示例看起来是相同的。
我想知道,每种方法的优点和缺点是什么?在什么情况下我应该最好使用一种或另一种?

r6l8ljro

r6l8ljro1#

使用构造函数时,你必须预先构造它的参数,而使用构建器时,你可以在一个流畅的语句中完成。

// constructor
MultiValueMap<String, String> headers = ...;
ResponseEntity<String> resp = new ResponseEntity(headers, HttpStatus.OK);

// builder
ResponseEntity<String> resp = ResponseEntity.ok()
    .header("header1", "value1")
    .header("header2", "value2")
    .build();

另外,对于有一长串参数的构造函数,很难看到每个参数的语义。在这种情况下,我更喜欢使用构建器。

b09cbbtk

b09cbbtk2#

如果你有很多相似的端点需要定义,比如定义一个新的API,我发现从长远来看,使用构造函数更好,因为随着时间的推移,使用静态构造函数会导致重复的代码。
特别是在报头的情况下;Content-Type、Accept、Encoding等必须在所有响应上进行设置,并且在每个控制器方法中写出每一个都很麻烦。使用构造函数将这些样板代码分离到一个单独的函数中会更容易。
这就是我的感受,无论如何。

hi3rlvi2

hi3rlvi23#

所以答案似乎是“你可以根据你个人的代码偏好,无所谓地做一个或另一个”

相关问题