From 210fd09600736e657ddf3b35a3c918dd49c2c39d Mon Sep 17 00:00:00 2001 From: wangyu <727842003@qq.com> Date: Fri, 5 Jul 2024 17:38:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96object=20mapper?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E9=85=8D=E7=BD=AE=E6=B3=A8=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RestClientConfiguration.java | 5 ++++- .../configure/RestObjectMapperProvider.java | 19 +++++++++++++++++++ .../group/flyfish/rest/utils/JacksonUtil.java | 9 +++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 rest-proxy-core/src/main/java/group/flyfish/rest/configuration/configure/RestObjectMapperProvider.java diff --git a/rest-proxy-core/src/main/java/group/flyfish/rest/configuration/RestClientConfiguration.java b/rest-proxy-core/src/main/java/group/flyfish/rest/configuration/RestClientConfiguration.java index 5efc682..06d73ea 100644 --- a/rest-proxy-core/src/main/java/group/flyfish/rest/configuration/RestClientConfiguration.java +++ b/rest-proxy-core/src/main/java/group/flyfish/rest/configuration/RestClientConfiguration.java @@ -1,5 +1,6 @@ package group.flyfish.rest.configuration; +import group.flyfish.rest.configuration.configure.RestObjectMapperProvider; import group.flyfish.rest.core.factory.DefaultHttpClientProvider; import group.flyfish.rest.core.factory.HttpClientFactoryBean; import group.flyfish.rest.core.factory.HttpClientProvider; @@ -11,6 +12,7 @@ import group.flyfish.rest.registry.proxy.support.resolvers.*; import group.flyfish.rest.utils.DataUtils; import group.flyfish.rest.utils.JacksonUtil; import org.apache.http.impl.client.CloseableHttpClient; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -98,7 +100,8 @@ public class RestClientConfiguration { * @return 结果 */ @Bean - public JacksonUtil restJacksonUtil() { + public JacksonUtil restJacksonUtil(ObjectProvider provider) { + provider.ifAvailable(bean -> JacksonUtil.setObjectMapper(bean.provide())); return new JacksonUtil(); } } diff --git a/rest-proxy-core/src/main/java/group/flyfish/rest/configuration/configure/RestObjectMapperProvider.java b/rest-proxy-core/src/main/java/group/flyfish/rest/configuration/configure/RestObjectMapperProvider.java new file mode 100644 index 0000000..65c9506 --- /dev/null +++ b/rest-proxy-core/src/main/java/group/flyfish/rest/configuration/configure/RestObjectMapperProvider.java @@ -0,0 +1,19 @@ +package group.flyfish.rest.configuration.configure; + +import com.fasterxml.jackson.databind.ObjectMapper; + +/** + * object mapper配置器 + * + * @author wangyu + */ +@FunctionalInterface +public interface RestObjectMapperProvider { + + /** + * 提供项目级别的object mapper + * + * @return 结果 + */ + ObjectMapper provide(); +} diff --git a/rest-proxy-core/src/main/java/group/flyfish/rest/utils/JacksonUtil.java b/rest-proxy-core/src/main/java/group/flyfish/rest/utils/JacksonUtil.java index 714f264..58e2464 100644 --- a/rest-proxy-core/src/main/java/group/flyfish/rest/utils/JacksonUtil.java +++ b/rest-proxy-core/src/main/java/group/flyfish/rest/utils/JacksonUtil.java @@ -66,6 +66,15 @@ public final class JacksonUtil { mapper.configure(JsonGenerator.Feature.ESCAPE_NON_ASCII, true); } + /** + * 设置jackson + * + * @param objectMapper 映射器 + */ + public static void setObjectMapper(ObjectMapper objectMapper) { + JacksonUtil.mapper = objectMapper; + } + /** * 修复不同环境下统一序列化表现 *