的Spring MVC應用程序,我有點糊塗這些事情我現在看到我們的Spring MVC應用程序,我希望有人能告訴我是什麼,我們正在做錯誤的。由於谷歌沒有對我的答案,我相信我們做錯了。奇怪的行爲與@JsonIdentityInfo
我們已經一個簡單的Spring應用4.1.5.RELEASE。沒有什麼特別的提及它。有一個MappingJackson2HttpMessageConverter配置爲通過Jackson ObjectMapper向RestControllers中的客戶端傳遞JSON。
其中獲得通過傑克遜連載所有實體對TPE級
@JsonIdentityInfo(generator = IntSequenceGenerator.class, property = "@jsonObjectId")
現在奇怪的部分如下註解:
有彈簧集成測試,執行以下操作(objectMapper被從自動裝配web應用上下文中,其將請求paylod相同的實例)
objectMapper.writeValueAsString(dummy) // generate json from dummy object
mockMvc.perform(post(...)) // make a post request with JSON payload generated
evaluate reponse
執行測試一次爲鄰凱。如果我複製該測試用例並執行兩次,那麼我會從服務器返回一個400,返回IllegalArgumentExecption - >已經有POJO用於ID ...問題可以在現實應用程序中複製,因此它似乎沒有測試問題。
我已經想通了,在序列化過程中,負責生成「jsonObjectId」屬性的IntSequenceGenerator每次需要序列化一個對象時都會被創建。好吧到目前爲止。但是相應的對應,在我們的例子中,來自Jackson的默認使用的SimpleObjectIdResolver始終是相同的實例。因此,第二個服務器請求(第二個反序列化過程)導致SimpleObjectIdResolver中出現該異常。
,我會很感激,如果有人可以給我一個提示,我們正在做什麼錯......
安斯加爾您好,我知道的2.7.0之前的版本有哈希數組和字符串一些bug,你有你的跟蹤誤差? – nole