java - 是否可以覆盖 Orika 的内置转换器 - XMLGregorianCalendar 到 java.util.Date?

标签 java date orika xmlgregoriancalendar

Orika 有一套“BuiltinConverters”

https://github.com/orika-mapper/orika/blob/master/core/src/main/java/ma/glasnost/orika/converter/builtin/BuiltinConverters.java

但是将 XMLGregorianCalendar 映射到 java.util.Date 的那个对我来说无法正常工作。我发现了用令人满意的结果来映射它的方法,但我找不到一种方法让 Orika 使用它而不是它自己的内置转换器。我尝试在 MapperDefinition 中注册转换器:

public class MapperDefinition {

   private final MapperFactory factory;
   private final ConverterFactory converterFactory;

   public MapperDefinition() {

     factory = new DefaultMapperFactory.Builder().build();
     converterFactory = factory.getConverterFactory();

     converterFactory.registerConverter(new CustomConverter<XMLGregorianCalendar, Date>() {
       @Override
       public Date convert(XMLGregorianCalendar source, Type<? extends Date> destinationType) {
         LocalDateTime ldt = LocalDateTime.of(source.getYear(), source.getMonth(), 
             source.getDay(), source.getHour(), source.getMinute(), source.getSecond());
         return Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());
       }
     }
   }

}

但是调试显示 Orika 似乎忽略了我的自定义转换器,仍然使用自己的内置转换器。我也无法在 Orika 用户指南上找到有关覆盖它的任何信息:

https://orika-mapper.github.io/orika-docs/converters.html

有谁知道是否可以让 Orika 使用我的方式来映射这两种类型?

最佳答案

我自己找到了答案。

问题是,内置转换器是“Bi DirectionConverter”,我使用“CustomConverter”,因为我只对以一种方式更改映射感兴趣:XML --> Date。将其更改为双向解决了问题。

关于java - 是否可以覆盖 Orika 的内置转换器 - XMLGregorianCalendar 到 java.util.Date?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44648535/

相关文章:

R - 将字符串转换为只有年/月的日期

python - 转换日期Python

java - 失去了一天的约会

java - 映射时向 Orika MappingContext 添加外部数据

java - "Lambda can be replaced with method reference"in Lazy Logging with Log4J2

java - 正确的 Java 类结构

Java netbeans - 如果 jtextfield 值为空,如何将 jtextfield 值分配为零

python - 将格式为 68.830320 的字符串列表转换为 'time' 格式,不带日期信息。时间格式为秒.毫秒

java - 如何使用 Orika 将 Java 映射映射到对象

java - 如何使用 WSO2 MSf4J 创建 JAX-RS 子资源