Ver código fonte

Merge pull request '添加Jackson中Long时间戳按时区转换;优化objectMapper.configure过时的提示' (#1) from infinite_tree/aizuda-framework:work into master

Reviewed-on: http://git.aizuda.com/aizuda/aizuda-framework/pulls/1
Reviewed-by: aizuda <jobob@qq.com>
aizuda 1 ano atrás
pai
commit
283f253de4

+ 12 - 7
aizuda-service-parent/src/main/java/com/aizuda/service/autoconfigure/JsonAutoConfiguration.java

@@ -5,14 +5,15 @@
  */
 package com.aizuda.service.autoconfigure;
 
+import com.aizuda.service.editors.DoubleEditor;
+import com.aizuda.service.editors.IntegerEditor;
+import com.aizuda.service.editors.LongEditor;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.MapperFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.module.SimpleModule;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.aizuda.service.editors.DoubleEditor;
-import com.aizuda.service.editors.IntegerEditor;
-import com.aizuda.service.editors.LongEditor;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.propertyeditors.CustomDateEditor;
 import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
 import org.springframework.context.annotation.Bean;
@@ -33,10 +34,10 @@ import java.text.SimpleDateFormat;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
-import java.util.Locale;
+import java.util.TimeZone;
 
 /**
- * 爱组搭 http://aizuda.com
+ * 爱组搭 <a href="http://aizuda.com">http://aizuda.com</a>
  * ----------------------------------------
  * Json 处理相关配置
  *
@@ -47,6 +48,8 @@ import java.util.Locale;
 @RestControllerAdvice
 @Configuration(proxyBeanMethods = false)
 public class JsonAutoConfiguration {
+    @Value("${spring.jackson.time-zone}")
+    private String timeZone = "UTC+8";
 
     /**
      * 字符串转换处理
@@ -90,13 +93,15 @@ public class JsonAutoConfiguration {
     public HttpMessageConverters jacksonHttpMessageConverters() {
         final Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
         builder.serializationInclusion(JsonInclude.Include.NON_NULL);
+        // 忽略 transient 关键词属性
+        builder.featuresToEnable(MapperFeature.PROPAGATE_TRANSIENT_MARKER);
         final ObjectMapper objectMapper = builder.build();
         SimpleModule simpleModule = new SimpleModule();
         // Long 转为 String 防止 js 丢失精度
         simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
         objectMapper.registerModule(simpleModule);
-        // 忽略 transient 关键词属性
-        objectMapper.configure(MapperFeature.PROPAGATE_TRANSIENT_MARKER, true);
+        // 设置时区
+        objectMapper.setTimeZone(TimeZone.getTimeZone(timeZone));
         MappingJackson2HttpMessageConverter jacksonConverter = new MappingJackson2HttpMessageConverter(objectMapper);
         jacksonConverter.setDefaultCharset(StandardCharsets.UTF_8);
         StringHttpMessageConverter stringConverter = new StringHttpMessageConverter(StandardCharsets.UTF_8);