当前位置: 首页 > 知识库问答 >
问题:

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

郎祯
2023-03-14
@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个答案

尉迟哲瀚
2023-03-14

据我所知这是不可能的。MapStruct是一个批注处理器,它分析@mapping批注编译时间。

此外,注释参数需要真常量。不能从资源包或属性文件解析它们。

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

 类似资料:
  • 我有以下DTO和域对象。我正在使用Mapstruct将域对象复制到DTO对象。 使用下面的映射器将域映射到DTO。我不想将电话属性从域映射到DTO。怎么做?我尝试在mapping ignore中提供嵌套目标属性,但它给出了错误:

  • 我有mapstruct映射器的实现如下 没有注释的行,我收到以下错误: 错误:(20,14)Java:目标属性“status”的几个可能的源属性。 我是否可以通过添加一些注释来避免上面的样板(显式映射),说明Pojo1具有更高的优先级?我研究了Java文档和mapstruct的源代码,但没有任何示例或线索对我的情况有帮助。我试图用InheritanceStrategy找到一些东西,但它看起来很像M

  • 我正在从ModelMapper到MapStruct的转换过程中,到目前为止一切都很顺利,除了在列表上排序和筛选的情况,如果我有一个从域对象到实体的映射,例如: 从一个api中,我想在contactAddressLine1上进行过滤或排序,然后我想查找源代码(或反向映射时的目标代码),以便将其添加到动态jpq或sql查询中。 有没有办法用MapSTRt做到这一点? 使用ModelMapper,我可以

  • MapStruct:在映射到目标之前检查源的null。如果源为空,则需要从mapstruct接口引发自定义异常。

  • 问题内容: 我正在使用MapStruct库映射对象,但出现此错误: 无法将属性“ java.util.Date aDate”映射到“ javax.xml.bind.JAXBElement ADATE”。考虑声明/实现一个映射方法:“ javax.xml.bind.JAXBElement map(java.util.Date value)”。 我的问题:应该在哪里取消此映射方法? 问题答案: 我通过

  • 并将属性加载到映射中,结果为: 有什么想法如何创建一个映射策略吗?