Skip to content
广告❤️成为赞助商

转换器

可以自定义最终返回的JavaBean的某些字段的转换策略

说明:

  • 可以自定义最终返回的JavaBean的某些字段的转换策略,比如数据库中存入了一些比较特殊的值,如时间,从Mongo中查询出来其实是Date类型,可以选择使用LocalDateTime接收,然后自定义LocalDateTime的转换策略(框架本身已支持)
  • 使用转换器时,需要将转换器类注册为SpringBean,并且设置泛型类型,用来指定转换器的类型

ConversionStrategy

  • 此接口是转换器的接口,所有转换器都应实现此接口,实现接口中的convertValue(Field field, Object obj, Object fieldValue)方法
  • fieldValue: 字段值
  • fieldType: 字段类型
  • mongoConverter: 转换器

示例

首先,需要将转换器类实现ConversionStrategy接口,设置泛型类型为转换的类,并且使用注册为bean(示例中使用@Component注解注册),尽量不要给转换器实现类设置代理类
java
//注册为SpringBean
@Component
public class LocalDateTimeConversionStrategy implements ConversionStrategy<LocalDateTime> {}
接下来,实现ConversionStrategy接口中的convertValue方法,就可以写转换策略了
java
//注册为SpringBean
@Component
public class LocalDateTimeConversionStrategy implements ConversionStrategy<LocalDateTime> {
        @Override
    public LocalDateTime convertValue(Object fieldValue, Class<?> fieldType, MongoConverter mongoConverter) throws IllegalAccessException {
        return fieldValue.getClass().equals(Long.class) ?
                InstantUtil.convertTimestampToLocalDateTime((Long) fieldValue) :
                InstantUtil.convertTimestampToLocalDateTime8(((Date) fieldValue).toInstant());
    }
}