在mapstruct中映射时是否可以从属性文件中加载源值和目标值?

时间:2019-09-06 18:38:20

标签: java spring mapstruct

我想创建对象到对象绑定,所以我选择Map struct API。我的要求是,我不希望将源字符串和目标字符串都保留在Java类中,而是要在构建应用程序时从“不同文件”中加载源字符串和目标,并注入到Mapper类中。

@Mapper
public interface SimpleSourceDestinationMapper {
    @Mappings({
        @Mapping(source ="name", target="tgName")

    })
    SimpleDestination sourceToDestination(SimpleSource source);
}

我想从属性文件中加载源名称和目标的tgName。

类似的东西

@Mapping(source ="${mapstruct.source.name}", target="${mapstruct.destination.name}")

application.properties
mapstruct.source.name=name
mapstruct.destination.name=tgName

1 个答案:

答案 0 :(得分:0)

据我所知这是不可能的。 MapStruct是注释处理器,它分析os.environ["QT_IM_MODULE"] = "qtvirtualkeyboard" 注释的编译时间。

此外,注释参数还需要真常量。您无法从资源束或属性文件中解析它们。

不确定这是否行得通,但是您可以考虑编写自己的扩展程序(处理器)。 MapStruct连接处理器。第一个开始,并确定应运行哪个。默认情况下,有一个处理器可以分析源代码并构建源模型,@Mapping,然后是一个处理器可以构建内部模型MethodRetrievalProcessor,等等。

MapStruct允许在此链中添加自定义处理器。但这需要了解MapStruct的内部工作原理。