【问题标题】:Is there mapping library with startup check of correct bean mapping?是否有带有正确 bean 映射启动检查的映射库?
【发布时间】:2014-04-12 19:11:07
【问题描述】:

所以我们正在开发经典的多层应用程序,我们经常需要做的一件事情是在域实体、DTO、来自不同层的其他 DTO 等之间进行映射。

现在,我们正在手动执行此操作,实际上我对此非常满意。一些同事对此感到困扰,并希望有一些更自动的对象映射方式——比如 Dozer、Apache BeanUtils 等。我不喜欢的是使用这种方法意味着失去静态检查和重构——如果你在您的域实体,应用程序将被破坏,但编译器不会警告您 - 您将在运行时严重崩溃。同事们争辩说,一旦单元测试涵盖了所有内容,这些错误就会被捕获。我不太确定这种情况是否会一直如此。

但是,我想找到两全其美的解决方案 - 手动方法的安全性和半自动映射的简单性和简洁性。

我想在应用程序启动期间会检查安全性 - 此检查代码将找到所有具有定义映射的实体,并检查所有映射的属性是否在另一个类中具有相应的属性。

是否有任何映射库可以做到这一点?我找不到这方面的任何信息。我知道这可能很容易实现,但是标准的现有解决方案将是使用它的更好的论据。谢谢!

【问题讨论】:

    标签: java mapping dto


    【解决方案1】:

    我想说Selma 绝对是您正在寻找的工具。

    此映射框架是作为注释处理器构建的,因此它会在编译时生成映射代码。您定义一个接口来指定映射协定。如果解释性日志出现问题,Selma 将引发编译失败。

    它是为重构证明而构建的,因为 Selma 会在编译时生成代码,而且您还可以浏览映射源。

    试一试告诉我。

    【讨论】:

    • 我现在才让自己尝试一下,但它比我预期的还要好(因为检查是在编译期间,而不是在启动时)。谢谢!
    【解决方案2】:

    MapStruct 与 Selma 非常相似——它也使用注解处理器生成映射代码,应该是类型安全和防重构的。

    http://mapstruct.org/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 2020-08-02
      相关资源
      最近更新 更多