2014-03-31 55 views
0

我有一個休息客戶端類,它負責使用單個Spring RestTemplate bean進行HTTP交換來調用休息服務。這包括通過MappingJacksonHttpMessageConverter.java序列化MyObject.java。Spring RestTemplate - 指定傑克遜視圖

創建(POST)MyObject時,我發送5個字段。

更新(PUT)MyObject時,我只能發送3個(可變字段)。

我想要一個單一的DTO,MyObject,在不同情況下序列化不同:POST與PUT。傑克遜景觀步驟完美地解決了這個問題。

我的問題是ObjectMapper隱藏在RestTemplate messageConverters中,這使得在REST交換時很難添加上下文,以至於我希望ObjectMapper在序列化時使用哪個視圖。

有沒有什麼辦法可以實現這一點,或者我需要2個不同的RestTemplates,一個配置了一個用於創建的對象映射器,另一個用於更新。這看起來像很多重複。

在此先感謝

+0

你能發表一些代碼嗎? – mrroboaat

+0

我會看看我是否可以在今晚添加一些 – Matt

回答

1

您可以配置ObjectMapper或DTO本身序列化過程中忽略空值。然後只設置你想在DTO中傳遞的字段。

+0

我真的不想那麼做。 MyObject有一個不可變的ID並且屬於該對象,它恰好在更新序列化的上下文中,我不想發送它。 目前我正在創建一個沒有這些字段的updateDto,它似乎有點混亂。 – Matt