Groovy 的 Nomin 映射器框架

Nomin Mapper Framework for Groovy

我正在为我的 Spring/Groovy 应用程序寻找映射框架。我发现 Nomin - 它看起来符合我的需要。但我有以下问题:它在我的测试中找不到我的映射规则脚本 class.

src/main/groovy/mypackage/entity2entitydto.groovy:

import org.nomin.entity.*

mappingFor a: Entity,  b: EntityDto
a.name      =       b.name

src/test/groovy/mypackage/Entity2EntityDtoTest.groovy:

public class CoinMarketCap2CoinTest {
    NominMapper nomin = new Nomin("entity2entitydto.groovy");

    // also tried entity2entitydto, Entity2entitydto, Entity2entitydto.groovy
    // also tried with full package name
    // also tried File Name Entity2entitydto.groovy

    @Test
    public void test() {
        // Testing ...
    }

}

gradle clean build --stacktrace

后的结果
org.nomin.core.NominException: Specified resource entity2entitydto.groovy isn't found!
...

有人对与 groovy 配合良好的映射框架有任何想法或建议。提前致谢。

Nomin 抛出此异常,因为您的脚本不在 classpath 中。将您的 entity2entitydto.groovy 文件移动到 src/main/resources,以便 Nomin 可以从 class 路径正确加载您的映射脚本。

其次,确保在映射脚本中导入正确的 classes。例如,如果我有 mypackage.Entitymypackage.EntityDto class 那么我可以像这样导入它们:

import mypackage.Entity
import mypackage.EntityDto

mappingFor a: Entity,  b: EntityDto
a.name      =       b.name

相反,您必须使用完整的规范名称,例如:

mappingFor a: mypackage.Entity,  b: mypackage.EntityDto
a.name      =       b.name

您还可以查看根据您的问题创建的这个非常基本和简单的示例 - https://github.com/wololock/nomin-example

希望对您有所帮助。