2017-05-24 135 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時,我發現從長遠來看,使用構造函數會更好。因爲隨着時間的推移,使用靜態構建器時最終會產生重複的代碼。

特別是在標題的情況下;內容類型,接受,編碼等必須在所有響應中設置,並且在每個控制器方法中寫出每個響應是麻煩的。使用構造函數將這樣的樣板代碼分離成單獨的函數更容易。

這就是我無論如何感受到的。