package com.emato.cus.supervise.config.httpMsgCvt; import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpOutputMessage; import org.springframework.http.converter.HttpMessageNotWritableException; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import java.io.IOException; import java.lang.reflect.Type; /** * 自定义 HttpMessageConverter 消息转换器 * * @author Scott Chen * @date 2017/4/19 */ @Configuration public class CustomHttpMessageConverterConfig { @Bean public MappingJackson2HttpMessageConverter customMessageConverter(ObjectMapper objectMapper) { MappingJackson2HttpMessageConverter bean = new MappingJackson2HttpMessageConverter(objectMapper) { private final Logger logger = LoggerFactory.getLogger(MappingJackson2HttpMessageConverter.class); @Override protected void writeInternal(Object object, Type type, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException { /** * 外部消息如果不是 ResponseMessage * 重新包装成 ResponseMessage */ /*ResponseMessage responseMessage; if (object == null) { responseMessage = ResponseMessage.builder().build(); } else if (object instanceof ResponseMessage) { responseMessage = (ResponseMessage) object; } else if (object instanceof String) { responseMessage = ResponseMessage.builder() .setMsg((String) object) .build(); } else { ResponseMessageData respData = ResponseMessageData.builder(object, Object.class).build(); responseMessage = ResponseMessage.builder() .setData(respData) .build(); }*/ super.writeInternal(object, Object.class, outputMessage); String result = objectMapper.writeValueAsString(object); logger.info("返回数据:{}", result); } }; return bean; } }