minglipro baa5aafe23
All checks were successful
Gitea Actions Build / Build (push) Successful in 1m0s
no message
2025-09-11 19:32:51 +08:00

74 lines
2.3 KiB
Java

package com.mingliqiye.utils.springboot.autoconfigure;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.mingliqiye.utils.json.GsonJsonApi;
import com.mingliqiye.utils.json.JsonApi;
import com.mingliqiye.utils.json.converters.DateTimeJsonConverter;
import com.mingliqiye.utils.json.converters.JsonStringConverter;
import com.mingliqiye.utils.json.converters.UUIDJsonStringConverter;
import com.mingliqiye.utils.time.DateTime;
import com.mingliqiye.utils.uuid.UUID;
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.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.gson.GsonBuilderCustomizer;
import org.springframework.context.annotation.Bean;
@ConditionalOnClass(Gson.class)
@AutoConfiguration
@AutoConfigureAfter(
name = {
"org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration",
"com.mingliqiye.utils.springboot.autoconfigure.JacksonAutoConfiguration",
}
)
public class GsonAutoConfiguration {
private static final Logger log = LoggerFactory.getLogger(
"MingliUtils-GsonAutoConfiguration"
);
public static GsonBuilder addTypeAdapter(GsonBuilder gsonBuilder) {
JsonStringConverter<DateTime> dateTimeJsonConverter =
new DateTimeJsonConverter();
JsonStringConverter<UUID> uuidJsonStringConverter =
new UUIDJsonStringConverter();
try {
return gsonBuilder
.registerTypeAdapter(
uuidJsonStringConverter.getTClass(),
dateTimeJsonConverter
.getGsonJsonStringConverterAdapter()
.getGsonTypeAdapter()
)
.registerTypeAdapter(
dateTimeJsonConverter.getTClass(),
dateTimeJsonConverter
.getGsonJsonStringConverterAdapter()
.getGsonTypeAdapter()
);
} finally {
log.info("MingliUtils GsonBuilder TypeAdapter add");
}
}
@Bean
public GsonBuilderCustomizer mingliGsonCustomizer() {
return GsonAutoConfiguration::addTypeAdapter;
}
@Bean
@ConditionalOnMissingBean
public JsonApi jsonApi(Gson gson) {
log.info(
"MingliUtils-JsonApiAutoConfiguration: GsonJsonApi bean is created."
);
return new GsonJsonApi(gson);
}
}