From 77d60b38fc54979c6d678db91906e4269e3a40bd Mon Sep 17 00:00:00 2001 From: minglipro Date: Thu, 11 Sep 2025 14:34:46 +0800 Subject: [PATCH] =?UTF-8?q?refactor(autoconfigure):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E9=85=8D=E7=BD=AE=E5=B9=B6=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20Jackson=20=E6=94=AF=E6=8C=81-=20=E9=87=8D=E6=96=B0=E7=BB=84?= =?UTF-8?q?=E7=BB=87=20AutoConfiguration=20=E7=B1=BB=E7=BB=93=E6=9E=84?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E5=88=9D=E5=A7=8B=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91=20-=20=E6=96=B0=E5=A2=9E=20JacksonAutoConfiguration?= =?UTF-8?q?=20=E7=B1=BB=EF=BC=8C=E4=B8=93=E9=97=A8=E5=A4=84=E7=90=86=20Jac?= =?UTF-8?q?kson=20=E7=9B=B8=E5=85=B3=E9=85=8D=E7=BD=AE=20-=20=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=89=88=E6=9C=AC=E5=8F=B7=E8=87=B3=203.1.1=20-=20?= =?UTF-8?q?=E4=B8=BA=20SimpleModule=20=E8=AE=BE=E7=BD=AE=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E5=90=8D=E7=A7=B0=20-=20=E7=A7=BB=E9=99=A4=E5=86=97?= =?UTF-8?q?=E4=BD=99=E4=BB=A3=E7=A0=81=EF=BC=8C=E6=8F=90=E9=AB=98=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=8F=AF=E8=AF=BB=E6=80=A7=E5=92=8C=E7=BB=B4=E6=8A=A4?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- .../autoconfigure/AutoConfiguration.java | 55 ++++--------------- .../JacksonAutoConfiguration.java | 38 +++++++++++++ .../utils/time/serialization/Jackson.java | 3 +- .../utils/uuid/serialization/Jackson.java | 2 +- ...ot.autoconfigure.AutoConfiguration.imports | 1 + 6 files changed, 53 insertions(+), 48 deletions(-) create mode 100644 src/main/java/com/mingliqiye/utils/springboot/autoconfigure/JacksonAutoConfiguration.java diff --git a/gradle.properties b/gradle.properties index 3a091df..f45e851 100644 --- a/gradle.properties +++ b/gradle.properties @@ -22,4 +22,4 @@ JDKVERSIONS=1.8 GROUPSID=com.mingliqiye.utils ARTIFACTID=mingli-utils -VERSIONS=3.1.0 +VERSIONS=3.1.1 diff --git a/src/main/java/com/mingliqiye/utils/springboot/autoconfigure/AutoConfiguration.java b/src/main/java/com/mingliqiye/utils/springboot/autoconfigure/AutoConfiguration.java index 1d9021e..27877e8 100644 --- a/src/main/java/com/mingliqiye/utils/springboot/autoconfigure/AutoConfiguration.java +++ b/src/main/java/com/mingliqiye/utils/springboot/autoconfigure/AutoConfiguration.java @@ -22,25 +22,18 @@ package com.mingliqiye.utils.springboot.autoconfigure; -import com.mingliqiye.utils.bean.springboot.SpringBeanUtil; import com.mingliqiye.utils.collection.ForEach; -import com.mingliqiye.utils.jackson.Serializers; -import com.mingliqiye.utils.json.JacksonJsonApi; -import com.mingliqiye.utils.json.JsonApi; import com.mingliqiye.utils.time.DateTime; import com.mingliqiye.utils.time.Formatter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; import java.io.IOException; import java.io.InputStream; -@Configuration +@org.springframework.boot.autoconfigure.AutoConfiguration @EnableConfigurationProperties(AutoConfiguration.class) @ComponentScan( { @@ -60,11 +53,16 @@ public class AutoConfiguration { "| $$ |\\$ /$$ |$$ | $$ | $$ | $$ | $$\\ $$ | |\n" + "| $$ | \\_/ $$ |$$$$$$$$\\\\$$$$$$ | $$ | \\$$$$$$ | |\n" + "| \\__| \\__|\\________|\\______/ \\__| \\______/ |\n"; - private static String banner2; - private final Logger log = LoggerFactory.getLogger(AutoConfiguration.class); - private com.fasterxml.jackson.databind.ObjectMapper objectMapper; - public AutoConfiguration() {} + private static String banner2; + private final Logger log = LoggerFactory.getLogger( + "MingliUtils-AutoConfiguration" + ); + + public AutoConfiguration() { + printBanner(); + log.info("MingliUtils AutoConfiguration succeed"); + } public static void printBanner() { StringBuilder bannerBuilder = new StringBuilder(banner); @@ -111,37 +109,4 @@ public class AutoConfiguration { "---------------------------------------------------------" ); } - - @jakarta.annotation.PostConstruct - public void init() { - try { - Class.forName("com.fasterxml.jackson.databind.ObjectMapper"); - log.info("init ObjectMapper"); - objectMapper = SpringBeanUtil.getBean( - com.fasterxml.jackson.databind.ObjectMapper.class - ); - Serializers.addSerializers(objectMapper); - log.info("add ObjectMapper Serializers OK"); - } catch (ClassNotFoundException ignored) { - log.info( - "Jackson ObjectMapper not found in classpath. Jackson serialization features will be disabled." - ); - } catch (Exception e) { - log.warn("Failed to initialize ObjectMapper", e); - } - printBanner(); - } - - @Bean - @ConditionalOnClass(name = "com.fasterxml.jackson.databind.ObjectMapper") - public JsonApi jsonApi() { - if (objectMapper == null) { - log.warn( - "ObjectMapper is not available, returning null for JsonApi" - ); - return null; - } - log.info("Creating JacksonJsonApi bean"); - return new JacksonJsonApi(objectMapper); - } } diff --git a/src/main/java/com/mingliqiye/utils/springboot/autoconfigure/JacksonAutoConfiguration.java b/src/main/java/com/mingliqiye/utils/springboot/autoconfigure/JacksonAutoConfiguration.java new file mode 100644 index 0000000..8d35b74 --- /dev/null +++ b/src/main/java/com/mingliqiye/utils/springboot/autoconfigure/JacksonAutoConfiguration.java @@ -0,0 +1,38 @@ +package com.mingliqiye.utils.springboot.autoconfigure; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.mingliqiye.utils.jackson.Serializers; +import com.mingliqiye.utils.json.JacksonJsonApi; +import com.mingliqiye.utils.json.JsonApi; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.context.annotation.Bean; + +@AutoConfiguration +@AutoConfigureAfter( + name = { + "org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration", + } +) +@ConditionalOnClass(ObjectMapper.class) +public class JacksonAutoConfiguration { + + private final Logger log = LoggerFactory.getLogger( + "MingliUtils-JacksonAutoConfiguration" + ); + + public JacksonAutoConfiguration() { + log.info("MingliUtils JacksonAutoConfiguration succeed"); + } + + @Bean + public JsonApi jsonApi(ObjectMapper objectMapper) { + log.info("Creating JacksonJsonApi bean"); + Serializers.addSerializers(objectMapper); + log.info("MingliUtils Serializers created"); + return new JacksonJsonApi(objectMapper); + } +} diff --git a/src/main/java/com/mingliqiye/utils/time/serialization/Jackson.java b/src/main/java/com/mingliqiye/utils/time/serialization/Jackson.java index d038ffc..6f92c8f 100644 --- a/src/main/java/com/mingliqiye/utils/time/serialization/Jackson.java +++ b/src/main/java/com/mingliqiye/utils/time/serialization/Jackson.java @@ -31,6 +31,7 @@ import com.fasterxml.jackson.databind.jsontype.TypeSerializer; import com.fasterxml.jackson.databind.module.SimpleModule; import com.mingliqiye.utils.time.DateTime; import com.mingliqiye.utils.time.Formatter; + import java.io.IOException; /** @@ -47,7 +48,7 @@ public class Jackson { */ public static void addSerializers(ObjectMapper objectMapper) { // 创建SimpleModule并添加DateTime类型的序列化器和反序列化器 - SimpleModule module = new SimpleModule() + SimpleModule module = new SimpleModule("MingliqiyeDateTimeModule") .addSerializer(DateTime.class, new DateTimeJsonSerializer()) .addDeserializer(DateTime.class, new DateTimeJsonDeserializerM7()); objectMapper.registerModule(module); diff --git a/src/main/java/com/mingliqiye/utils/uuid/serialization/Jackson.java b/src/main/java/com/mingliqiye/utils/uuid/serialization/Jackson.java index ae323e6..9c85352 100644 --- a/src/main/java/com/mingliqiye/utils/uuid/serialization/Jackson.java +++ b/src/main/java/com/mingliqiye/utils/uuid/serialization/Jackson.java @@ -47,7 +47,7 @@ public class Jackson { */ public static void addSerializers(ObjectMapper objectMapper) { // 创建SimpleModule并添加UUID的序列化器和反序列化器 - SimpleModule module = new SimpleModule() + SimpleModule module = new SimpleModule("MingliqiyeUUIDModule") .addSerializer(UUID.class, new UUIDJsonSerializer()) .addDeserializer(UUID.class, new UUIDJsonDeserializer()); objectMapper.registerModule(module); diff --git a/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index d6d2c85..e01a515 100644 --- a/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -21,3 +21,4 @@ # com.mingliqiye.utils.springboot.autoconfigure.AutoConfiguration +com.mingliqiye.utils.springboot.autoconfigure.JacksonAutoConfiguration