Java Spring 4中WebSocket的自定义对象映射器
我正在使用Spring4,并遵循关于在Spring中使用WebSocket的说明。我能够让一切正常工作,但我不确定在发送Java Spring 4中WebSocket的自定义对象映射器,java,spring,spring-mvc,websocket,spring-4,Java,Spring,Spring Mvc,Websocket,Spring 4,我正在使用Spring4,并遵循关于在Spring中使用WebSocket的说明。我能够让一切正常工作,但我不确定在发送application/json时使用自定义对象映射器的最佳方式是什么 我正在注入一个SimpMessageSendingOperations并调用convertAndSend。我不确定,但我很确定我得到的是一个SimpMessageTemplate(它实现了SimpMessageSendingOperations),其中包含一个setMessageConverter。此方法采
application/json
时使用自定义对象映射器的最佳方式是什么
我正在注入一个SimpMessageSendingOperations
并调用convertAndSend
。我不确定,但我很确定我得到的是一个SimpMessageTemplate
(它实现了SimpMessageSendingOperations
),其中包含一个setMessageConverter
。此方法采用MessageConverter
,并且有一个MappingJackson2MessageConverter
类,但当然它使用自己的内部ObjectMapper
,无法重新定义
看起来我要做的是创建一个自定义的MessageConverter
,并在其中定义我的自定义ObjectMapper
,这样我就可以将它传递给simpMessageTemplate
的一个实例,然后将它注入到我的类中
这似乎是可行的,但也比我想象的要复杂得多。我忽略了什么吗?看起来这是可能的,但在Spring4.0.1中会变得更容易 见- 引用上面的bug报告 同时,通过@EnableWebSocketMessageBroker设置,您可以:
现在你可以这样做:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public boolean configureMessageConverters(List<MessageConverter> messageConverters) {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
// Avoid creating many ObjectMappers which have the same configuration.
converter.setObjectMapper(getMyCustomObjectMapper());
messageConverters.add(converter);
// Don't add default converters.
return false;
}
...
}
@配置
@EnableWebSocketMessageBroker
公共类WebSocketConfig实现WebSocketMessageBrokerConfiger{
@凌驾
公共布尔配置messageConverters(列出messageConverters){
MappingJackson2MessageConverter=新的MappingJackson2MessageConverter();
//避免创建具有相同配置的多个ObjectMapper。
setObjectMapper(getMyCustomObjectMapper());
messageConverters.add(converter);
//不要添加默认转换器。
返回false;
}
...
}
不幸的是,ObjectMapper
不能直接提供给MappingJackson2MessageConverter
的构造函数,这意味着它将首先创建一个无用的ObjectMapper