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