1
0
Преглед на файлове

Merge branch 'master' of csk/wms into master

Scott Chen преди 4 години
родител
ревизия
45c0537eca

+ 98 - 0
wms-center/src/main/java/com/lote/wms/config/HttpMsgConverter.java

@@ -0,0 +1,98 @@
+package com.lote.wms.config;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.lote.wms.common.utils.JacksonUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.StringHttpMessageConverter;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * HTTP 请求响应消息转换
+ * @author Scott Chen
+ * @since 1.0
+ * 2018-02-03
+ */
+@Configuration
+public class HttpMsgConverter {
+    private static final Logger logger = LoggerFactory.getLogger(HttpMsgConverter.class);
+
+    @Autowired
+    @Qualifier("customObjectMapper")
+    ObjectMapper customObjectMapper;
+
+    @Bean(name = "customObjectMapper")
+    public ObjectMapper customObjectMapper(){
+        return JacksonUtil.newObjectMapper();
+    }
+
+    /**
+     * 扩展现有的消息转换器链表
+     * 也可以继承并重写{@link org.springframework.web.servlet.config.annotation.WebMvcConfigurer#configureMessageConverters}方法
+     * @return
+     */
+    @Bean
+    public HttpMessageConverters httpMessageConverters() {
+        List<HttpMessageConverter<?>> list = new ArrayList<>();
+        list.add(httpMessageConverter());
+        list.add(mappingJackson2HttpMessageConverter());
+
+        logger.debug("--- 创建HttpMessageConverters Bean");
+        return new HttpMessageConverters(list);
+    }
+
+    /**
+     * jackson进行消息转换时,处理中文乱码
+     * @return
+     */
+    @Bean
+    public HttpMessageConverter httpMessageConverter() {
+        StringHttpMessageConverter messageConverter = new StringHttpMessageConverter();
+        messageConverter.setSupportedMediaTypes(mediaTypes());
+        messageConverter.setDefaultCharset(Charset.forName("UTF-8"));
+        return messageConverter;
+    }
+
+    /**
+     * 处理中文乱码
+     * @return
+     */
+    public List<MediaType> mediaTypes() {
+        //处理中文乱码
+        List<MediaType> list = new LinkedList();
+        list.add(MediaType.TEXT_HTML);
+        list.add(MediaType.APPLICATION_JSON);
+        return list;
+    }
+
+
+    /**
+     * HTTP 请求消息转换器
+     * 处理Date日期类型,处理LocalDateTime日期类型
+     * 使用<code>MappingJackson2HttpMessageConverter</code>类
+     * @return
+     */
+    @Bean
+    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
+        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
+        messageConverter.setObjectMapper(customObjectMapper);
+        messageConverter.setSupportedMediaTypes(mediaTypes());
+
+        logger.debug("--- 创建MappingJackson2HttpMessageConverter Bean");
+        return messageConverter;
+    }
+
+
+}

+ 98 - 0
wms-client/src/main/java/com/lote/wms/controller/client/config/HttpMsgConverter.java

@@ -0,0 +1,98 @@
+package com.lote.wms.controller.client.config;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.lote.wms.common.utils.JacksonUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.StringHttpMessageConverter;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * HTTP 请求响应消息转换
+ * @author Scott Chen
+ * @since 1.0
+ * 2018-02-03
+ */
+@Configuration
+public class HttpMsgConverter {
+    private static final Logger logger = LoggerFactory.getLogger(HttpMsgConverter.class);
+
+    @Autowired
+    @Qualifier("customObjectMapper")
+    ObjectMapper customObjectMapper;
+
+    @Bean(name = "customObjectMapper")
+    public ObjectMapper customObjectMapper(){
+        return JacksonUtil.newObjectMapper();
+    }
+
+    /**
+     * 扩展现有的消息转换器链表
+     * 也可以继承并重写{@link org.springframework.web.servlet.config.annotation.WebMvcConfigurer#configureMessageConverters}方法
+     * @return
+     */
+    @Bean
+    public HttpMessageConverters httpMessageConverters() {
+        List<HttpMessageConverter<?>> list = new ArrayList<>();
+        list.add(httpMessageConverter());
+        list.add(mappingJackson2HttpMessageConverter());
+
+        logger.debug("--- 创建HttpMessageConverters Bean");
+        return new HttpMessageConverters(list);
+    }
+
+    /**
+     * jackson进行消息转换时,处理中文乱码
+     * @return
+     */
+    @Bean
+    public HttpMessageConverter httpMessageConverter() {
+        StringHttpMessageConverter messageConverter = new StringHttpMessageConverter();
+        messageConverter.setSupportedMediaTypes(mediaTypes());
+        messageConverter.setDefaultCharset(Charset.forName("UTF-8"));
+        return messageConverter;
+    }
+
+    /**
+     * 处理中文乱码
+     * @return
+     */
+    public List<MediaType> mediaTypes() {
+        //处理中文乱码
+        List<MediaType> list = new LinkedList();
+        list.add(MediaType.TEXT_HTML);
+        list.add(MediaType.APPLICATION_JSON);
+        return list;
+    }
+
+
+    /**
+     * HTTP 请求消息转换器
+     * 处理Date日期类型,处理LocalDateTime日期类型
+     * 使用<code>MappingJackson2HttpMessageConverter</code>类
+     * @return
+     */
+    @Bean
+    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
+        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
+        messageConverter.setObjectMapper(customObjectMapper);
+        messageConverter.setSupportedMediaTypes(mediaTypes());
+
+        logger.debug("--- 创建MappingJackson2HttpMessageConverter Bean");
+        return messageConverter;
+    }
+
+
+}

+ 17 - 4
wms-common/src/main/java/com/lote/wms/common/utils/JacksonUtil.java

@@ -1,15 +1,17 @@
 package com.lote.wms.common.utils;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.core.JsonGenerationException;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.databind.*;
 import com.fasterxml.jackson.databind.module.SimpleModule;
-import com.fasterxml.jackson.databind.ser.BeanSerializerFactory;
-import com.fasterxml.jackson.databind.ser.SerializerFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.io.*;
+import java.io.IOException;
+import java.io.StringWriter;
 import java.util.List;
 import java.util.Map;
 
@@ -23,6 +25,8 @@ public class JacksonUtil {
     private static final Logger logger = LoggerFactory.getLogger(JacksonUtil.class);
 
     private static ObjectMapper objectMapper;
+    private static final ThreadLocal<ObjectMapper> objectMapperThreadLocal = new ThreadLocal<>();
+
 
     /**
      * 禁止调用无参构造
@@ -33,6 +37,15 @@ public class JacksonUtil {
         throw new IllegalAccessException("Can't create an instance!");
     }
 
+    public static ObjectMapper newObjectMapper() {
+        objectMapper = objectMapperThreadLocal.get();
+        if (objectMapper == null) {
+            objectMapper = getObjectMapper();
+            objectMapperThreadLocal.set(objectMapper);
+        }
+        return objectMapper;
+    }
+
     /**
      * 懒惰单例模式得到ObjectMapper实例
      * 此对象为Jackson的核心

+ 98 - 0
wms-operate/src/main/java/com/lote/wms/controller/operate/config/HttpMsgConverter.java

@@ -0,0 +1,98 @@
+package com.lote.wms.controller.operate.config;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.lote.wms.common.utils.JacksonUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.StringHttpMessageConverter;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * HTTP 请求响应消息转换
+ * @author Scott Chen
+ * @since 1.0
+ * 2018-02-03
+ */
+@Configuration
+public class HttpMsgConverter {
+    private static final Logger logger = LoggerFactory.getLogger(HttpMsgConverter.class);
+
+    @Autowired
+    @Qualifier("customObjectMapper")
+    ObjectMapper customObjectMapper;
+
+    @Bean(name = "customObjectMapper")
+    public ObjectMapper customObjectMapper(){
+        return JacksonUtil.newObjectMapper();
+    }
+
+    /**
+     * 扩展现有的消息转换器链表
+     * 也可以继承并重写{@link org.springframework.web.servlet.config.annotation.WebMvcConfigurer#configureMessageConverters}方法
+     * @return
+     */
+    @Bean
+    public HttpMessageConverters httpMessageConverters() {
+        List<HttpMessageConverter<?>> list = new ArrayList<>();
+        list.add(httpMessageConverter());
+        list.add(mappingJackson2HttpMessageConverter());
+
+        logger.debug("--- 创建HttpMessageConverters Bean");
+        return new HttpMessageConverters(list);
+    }
+
+    /**
+     * jackson进行消息转换时,处理中文乱码
+     * @return
+     */
+    @Bean
+    public HttpMessageConverter httpMessageConverter() {
+        StringHttpMessageConverter messageConverter = new StringHttpMessageConverter();
+        messageConverter.setSupportedMediaTypes(mediaTypes());
+        messageConverter.setDefaultCharset(Charset.forName("UTF-8"));
+        return messageConverter;
+    }
+
+    /**
+     * 处理中文乱码
+     * @return
+     */
+    public List<MediaType> mediaTypes() {
+        //处理中文乱码
+        List<MediaType> list = new LinkedList();
+        list.add(MediaType.TEXT_HTML);
+        list.add(MediaType.APPLICATION_JSON);
+        return list;
+    }
+
+
+    /**
+     * HTTP 请求消息转换器
+     * 处理Date日期类型,处理LocalDateTime日期类型
+     * 使用<code>MappingJackson2HttpMessageConverter</code>类
+     * @return
+     */
+    @Bean
+    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
+        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
+        messageConverter.setObjectMapper(customObjectMapper);
+        messageConverter.setSupportedMediaTypes(mediaTypes());
+
+        logger.debug("--- 创建MappingJackson2HttpMessageConverter Bean");
+        return messageConverter;
+    }
+
+
+}