只要
MongoTemplate.save()
mappingContext.getPersistentEntity(type)
)不支持简单的
byte[]
(或类似)
ByteBuffer
或者只是
InputStream
),我们没有选择,除非转换入站
字节[]
进入
String
让它工作。
为此,您需要编写一个简单的jar,其中包含自动配置和bean,如下所示:
@Bean
@GlobalChannelInterceptor(patterns = Sink.INPUT)
public ChannelInterceptor bytesToStringChannelInterceptor() {
return new ChannelInterceptor() {
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
if (message.getPayload() instanceof byte[]) {
String contentType = message.getHeaders().containsKey(MessageHeaders.CONTENT_TYPE)
? message.getHeaders().get(MessageHeaders.CONTENT_TYPE).toString()
: BindingProperties.DEFAULT_CONTENT_TYPE.toString();
if (contentType.contains("text") ||
contentType.contains("json") ||
contentType.contains("x-spring-tuple")) {
return new MutableMessage<>(new String(((byte[]) message.getPayload())), message.getHeaders());
}
}
return message;
}
};
}
字节[]
字符串
上
MongoTemplate