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; + } + /** * 修复不同环境下统一序列化表现 *