update 优化 jackson 自动配置 改为使用 BeanPostProcessor 匿名处理
parent
33120e1dce
commit
b0dbf45499
|
@ -5,31 +5,45 @@ import cn.iocoder.yudao.framework.jackson.core.databind.LocalDateTimeSerializer;
|
||||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.fasterxml.jackson.databind.module.SimpleModule;
|
import com.fasterxml.jackson.databind.module.SimpleModule;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.BeansException;
|
||||||
|
import org.springframework.beans.factory.config.BeanPostProcessor;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
@Configuration
|
@Configuration
|
||||||
public class YudaoJacksonAutoConfiguration {
|
public class YudaoJacksonAutoConfiguration {
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@SuppressWarnings("InstantiationOfUtilityClass")
|
public BeanPostProcessor objectMapperBeanPostProcessor() {
|
||||||
public JsonUtils jsonUtils(ObjectMapper objectMapper) {
|
return new BeanPostProcessor() {
|
||||||
SimpleModule simpleModule = new SimpleModule();
|
@Override
|
||||||
/*
|
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
|
||||||
* 1. 新增Long类型序列化规则,数值超过2^53-1,在JS会出现精度丢失问题,因此Long自动序列化为字符串类型
|
if (!(bean instanceof ObjectMapper)) {
|
||||||
* 2. 新增LocalDateTime序列化、反序列化规则
|
return bean;
|
||||||
*/
|
}
|
||||||
simpleModule
|
ObjectMapper objectMapper = (ObjectMapper) bean;
|
||||||
|
SimpleModule simpleModule = new SimpleModule();
|
||||||
|
/*
|
||||||
|
* 1. 新增Long类型序列化规则,数值超过2^53-1,在JS会出现精度丢失问题,因此Long自动序列化为字符串类型
|
||||||
|
* 2. 新增LocalDateTime序列化、反序列化规则
|
||||||
|
*/
|
||||||
|
simpleModule
|
||||||
// .addSerializer(Long.class, ToStringSerializer.instance)
|
// .addSerializer(Long.class, ToStringSerializer.instance)
|
||||||
// .addSerializer(Long.TYPE, ToStringSerializer.instance)
|
// .addSerializer(Long.TYPE, ToStringSerializer.instance)
|
||||||
.addSerializer(LocalDateTime.class, LocalDateTimeSerializer.INSTANCE)
|
.addSerializer(LocalDateTime.class, LocalDateTimeSerializer.INSTANCE)
|
||||||
.addDeserializer(LocalDateTime.class, LocalDateTimeDeserializer.INSTANCE);
|
.addDeserializer(LocalDateTime.class, LocalDateTimeDeserializer.INSTANCE);
|
||||||
|
|
||||||
objectMapper.registerModules(simpleModule);
|
objectMapper.registerModules(simpleModule);
|
||||||
|
|
||||||
JsonUtils.init(objectMapper);
|
JsonUtils.init(objectMapper);
|
||||||
return new JsonUtils();
|
log.info("初始化 jackson 自动配置");
|
||||||
|
return bean;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue