1
0

HttpMsgConverter.java 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package com.lote.wms.config;
  2. import com.fasterxml.jackson.databind.ObjectMapper;
  3. import com.lote.wms.common.utils.JacksonUtil;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.beans.factory.annotation.Qualifier;
  8. import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
  9. import org.springframework.context.annotation.Bean;
  10. import org.springframework.context.annotation.Configuration;
  11. import org.springframework.http.MediaType;
  12. import org.springframework.http.converter.HttpMessageConverter;
  13. import org.springframework.http.converter.StringHttpMessageConverter;
  14. import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
  15. import java.nio.charset.Charset;
  16. import java.util.ArrayList;
  17. import java.util.LinkedList;
  18. import java.util.List;
  19. /**
  20. * HTTP 请求响应消息转换
  21. * @author Scott Chen
  22. * @since 1.0
  23. * 2018-02-03
  24. */
  25. @Configuration
  26. public class HttpMsgConverter {
  27. private static final Logger logger = LoggerFactory.getLogger(HttpMsgConverter.class);
  28. @Autowired
  29. @Qualifier("customObjectMapper")
  30. ObjectMapper customObjectMapper;
  31. @Bean(name = "customObjectMapper")
  32. public ObjectMapper customObjectMapper(){
  33. return JacksonUtil.newObjectMapper();
  34. }
  35. /**
  36. * 扩展现有的消息转换器链表
  37. * 也可以继承并重写{@link org.springframework.web.servlet.config.annotation.WebMvcConfigurer#configureMessageConverters}方法
  38. * @return
  39. */
  40. @Bean
  41. public HttpMessageConverters httpMessageConverters() {
  42. List<HttpMessageConverter<?>> list = new ArrayList<>();
  43. list.add(httpMessageConverter());
  44. list.add(mappingJackson2HttpMessageConverter());
  45. logger.debug("--- 创建HttpMessageConverters Bean");
  46. return new HttpMessageConverters(list);
  47. }
  48. /**
  49. * jackson进行消息转换时,处理中文乱码
  50. * @return
  51. */
  52. @Bean
  53. public HttpMessageConverter httpMessageConverter() {
  54. StringHttpMessageConverter messageConverter = new StringHttpMessageConverter();
  55. messageConverter.setSupportedMediaTypes(mediaTypes());
  56. messageConverter.setDefaultCharset(Charset.forName("UTF-8"));
  57. return messageConverter;
  58. }
  59. /**
  60. * 处理中文乱码
  61. * @return
  62. */
  63. public List<MediaType> mediaTypes() {
  64. //处理中文乱码
  65. List<MediaType> list = new LinkedList();
  66. list.add(MediaType.TEXT_HTML);
  67. list.add(MediaType.APPLICATION_JSON);
  68. return list;
  69. }
  70. /**
  71. * HTTP 请求消息转换器
  72. * 处理Date日期类型,处理LocalDateTime日期类型
  73. * 使用<code>MappingJackson2HttpMessageConverter</code>类
  74. * @return
  75. */
  76. @Bean
  77. public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
  78. MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
  79. messageConverter.setObjectMapper(customObjectMapper);
  80. messageConverter.setSupportedMediaTypes(mediaTypes());
  81. logger.debug("--- 创建MappingJackson2HttpMessageConverter Bean");
  82. return messageConverter;
  83. }
  84. }