转换器
可以自定义最终返回的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());
}
}