Browse Source

:arrow_up: 依赖升级, 升级Jackson.modules JDK8

冷冷 7 years ago
parent
commit
8046974400

+ 4 - 2
pigx-common/pigx-common-core/pom.xml

@@ -72,8 +72,10 @@
 		</dependency>
 		<!--jacksonJSR310规范-->
 		<dependency>
-			<groupId>com.fasterxml.jackson.datatype</groupId>
-			<artifactId>jackson-datatype-jsr310</artifactId>
+			<groupId>com.fasterxml.jackson.module</groupId>
+			<artifactId>jackson-modules-java8</artifactId>
+			<version>${jackson.modules}</version>
+			<type>pom</type>
 		</dependency>
 	</dependencies>
 </project>

+ 17 - 23
pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/config/JacksonConfig.java

@@ -21,20 +21,13 @@ package com.pig4cloud.pigx.common.core.config;
 
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import org.springframework.boot.autoconfigure.AutoConfigureBefore;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
+import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
 
 /**
  * JacksonConfig
@@ -43,24 +36,25 @@ import java.time.format.DateTimeFormatter;
  * @date: 2018/7/28  12:29
  */
 @Configuration
+@ConditionalOnClass(ObjectMapper.class)
+@AutoConfigureBefore(JacksonAutoConfiguration.class)
 public class JacksonConfig {
 	/**
-	 * 处理序列化后的1.8的日期时间格式
+	 * 针对JDK 1.8 特殊处理
+	 * .registerModule(new ParameterNamesModule())
+	 * .registerModule(new Jdk8Module())
+	 * .registerModule(new JavaTimeModule()); // new module, NOT JSR310Module
 	 *
 	 * @return
 	 */
 	@Bean
-	public ObjectMapper getObjectMapper() {
-		ObjectMapper objectMapper = new ObjectMapper();
-		JavaTimeModule javaTimeModule = new JavaTimeModule();
-		javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-		javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-		javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
-		javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-		javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
-		javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));
-		objectMapper.registerModule(javaTimeModule);
+	public ObjectMapper getObjectMapper(Jackson2ObjectMapperBuilder builder) {
+		ObjectMapper objectMapper = builder.createXmlMapper(false).build();
+		objectMapper.findAndRegisterModules();
+		// 忽略json字符串中不识别的属性
 		objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+		// 忽略无法转换的对象
+		objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
 		return objectMapper;
 	}
 }

+ 1 - 0
pom.xml

@@ -55,6 +55,7 @@
 		<jasypt.version>2.1.0</jasypt.version>
 		<elastic-job-lite.version>2.1.5</elastic-job-lite.version>
 		<security.oauth.version>2.3.3.RELEASE</security.oauth.version>
+		<jackson.modules>2.9.6</jackson.modules>
 		<docker.url>http://192.168.0.13:4243</docker.url>
 		<registry.url>192.168.0.13:5000</registry.url>
 	</properties>