的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