From 9018c33d0eef0952e8870451786d6ad8c0adafed Mon Sep 17 00:00:00 2001 From: liaozan <378024053@qq.com> Date: Fri, 22 Dec 2023 09:56:09 +0800 Subject: [PATCH] Fix possible concurrent issues --- .../schbrain/common/util/JacksonUtils.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/commons/common-util/src/main/java/com/schbrain/common/util/JacksonUtils.java b/commons/common-util/src/main/java/com/schbrain/common/util/JacksonUtils.java index 77a3312..104690e 100644 --- a/commons/common-util/src/main/java/com/schbrain/common/util/JacksonUtils.java +++ b/commons/common-util/src/main/java/com/schbrain/common/util/JacksonUtils.java @@ -1,5 +1,6 @@ package com.schbrain.common.util; +import cn.hutool.core.lang.Singleton; import cn.hutool.extra.spring.SpringUtil; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.*; @@ -27,17 +28,19 @@ public class JacksonUtils { private static ObjectMapper PRETTY_OBJECT_MAPPER; public static ObjectMapper getObjectMapper() { - if (OBJECT_MAPPER == null) { - // Delay to get ObjectMapper from spring container to keep the same behavior with application - try { - OBJECT_MAPPER = SpringUtil.getBean(ObjectMapper.class).copy(); - } catch (Exception e) { - log.warn("Could not get ObjectMapper from Spring Container, return new instance for use"); - OBJECT_MAPPER = new ObjectMapper(); + return Singleton.get(JacksonUtils.class.getName(), () -> { + if (OBJECT_MAPPER == null) { + // Delay to get ObjectMapper from spring container to keep the same behavior with application + try { + OBJECT_MAPPER = SpringUtil.getBean(ObjectMapper.class).copy(); + } catch (Exception e) { + log.warn("Could not get ObjectMapper from Spring Container, return new instance for use"); + OBJECT_MAPPER = new ObjectMapper(); + } + OBJECT_MAPPER.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); } - OBJECT_MAPPER.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); - } - return OBJECT_MAPPER; + return OBJECT_MAPPER; + }); } public static ObjectMapper getPrettyObjectMapper() { -- GitLab