为单个Spring Controller指定消息转换器

时间:2014-05-07 09:14:05

标签: java spring spring-mvc type-conversion

我正在为具有一些奇怪的JSON映射实践的服务编写回发处理程序库。我可以非常轻松地配置自定义Jackson ObjectMapper来处理映射,但是如果我使用该映射器注册Spring MVC消息转换器,它会应用映射(对于其余的JSON我不正确)处理所有传入的请求。

我可以应用一些手动方法来手动解码这些消息,但让Spring类型转换服务在请求管道中处理它会更加清晰。

是否有可行的方法将自定义消息转换器附加到特定控制器,处理程序方法或映射字符串/模板/前缀?

1 个答案:

答案 0 :(得分:3)

我有类似的情况 - 我想创建自定义@ResponseBody等效,这将允许我配置JSON序列化的某些方面(在我的示例中,我希望JSON值可选地html编码)。我最终创建了自定义@JsonResponseBody注释,这会导致spring mvc对使用它注释的方法使用不同配置的Jackson消息转换器。

我必须扩展Spring的AbstractMessageConverterMethodProcessor以注册我的自定义注释的自定义处理,然后我需要通过将CustomAbstractMessageConverterMethodProcessor添加到RequestMappingHandlerAdapter的处理程序列表中来注册我的BeanPostProcessor 。这也很棘手,因为如果您使用xml配置,则必须通过{{1}}进行。

当我尝试这个(一年前,春季3.1)时,我没有找到任何更简单的方法。