Max*_* Wu 2 json annotations spring-integration
我的问题是如何在 SI 端点之间传递对象?
我发现的几乎每个示例都使用 XML 设置,我使用的是 Annotation 并且不知道如何解决此异常
Caused by: java.lang.IllegalArgumentException: Could not resolve 'json__TypeId__' in 'javaTypes'.
at org.springframework.integration.support.json.AbstractJacksonJsonObjectMapper.createJavaType(AbstractJacksonJsonObjectMapper.java:68)
at org.springframework.integration.support.json.Jackson2JsonObjectMapper.extractJavaType(Jackson2JsonObjectMapper.java:116)
at org.springframework.integration.support.json.Jackson2JsonObjectMapper.extractJavaType(Jackson2JsonObjectMapper.java:52)
at org.springframework.integration.support.json.AbstractJacksonJsonObjectMapper.fromJson(AbstractJacksonJsonObjectMapper.java:61)
at org.springframework.integration.json.JsonToObjectTransformer.doTransform(JsonToObjectTransformer.java:87)
at org.springframework.integration.transformer.AbstractTransformer.transform(AbstractTransformer.java:33)
... 18 more
Run Code Online (Sandbox Code Playgroud)
人们建议使用 xml 来解决这个问题,例如
<bean class="org.springframework.amqp.support.converter.DefaultClassMapper">
<property name="defaultType" value="foo.MyObject" />
</bean>
Run Code Online (Sandbox Code Playgroud)
但是我正在使用注释来创建转换器来处理从通道接收的消息,就像这样
@Bean
@Transformer(inputChannel="fromTcp", outputChannel="toHandler")
JsonToObjectTransformer jsonToObjectTransformer() {
ObjectMapper mapper = new ObjectMapper();
JsonObjectMapper<JsonNode, JsonParser> jm = new Jackson2JsonObjectMapper(mapper);
return new JsonToObjectTransformer(jm);
}
Run Code Online (Sandbox Code Playgroud)
实际上我不知道如何在 SI 端点之间传递对象。我只能通过 String 和 SI 使用默认序列化来处理 String 到 byte[],以及 byte[] 到 String。
转换器需要知道要转换成什么类型;你得到的错误是因为你没有提供类型,所以它回退到寻找包含类型信息的标头。
xml 的等价物是:
@Bean
@Transformer(inputChannel="fromTcp", outputChannel="toHandler")
JsonToObjectTransformer jsonToObjectTransformer() {
return new JsonToObjectTransformer(MyObject.class);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7042 次 |
| 最近记录: |