2017-05-24 80 views
1

在Spring Boot RestController中,我使用springframework类ResponseEntity来返回端点调用的响应。Spring ResponseEntity:使用构造函数还是静态构建器?

我最近发现有两种方法来实例化这个类。

使用构造函数:

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

使用静态生成器:

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

结果实例接缝是相同的。

我想知道,每个的优缺点是什么? 我应该在哪种情况下最好使用其中一种?

回答

0

有了构造函数,你必须提前构造它的参数,而使用构建器,你可以用一个流利的语句来完成它。

// 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(); 

此外,具有长参数列表的构造函数很难看到每个参数的语义。在那些情况下,我更喜欢建造者。

0

如果您有很多类似的端点需要定义,比如定义一个新的API时,我发现从长远来看,使用构造函数会更好。因为随着时间的推移,使用静态构建器时最终会产生重复的代码。

特别是在标题的情况下;内容类型,接受,编码等必须在所有响应中设置,并且在每个控制器方法中写出每个响应是麻烦的。使用构造函数将这样的样板代码分离成单独的函数更容易。

这就是我无论如何感受到的。