Mapstruct - 如何在生成的映射器类中注入 spring 依赖项

2023-12-06

我需要在生成的映射器实现中注入一个 spring 服务类,以便我可以通过以下方式使用它

   @Mapping(target="x", expression="java(myservice.findById(id))")"

这适用于 Mapstruct-1.0 吗?


正如 brettanomyces 所评论的,如果该服务未用于表达式以外的映射操作,则不会被注入。

我发现的唯一方法是:

  • 将我的映射器接口转换为抽象类
  • 将服务注入抽象类
  • 使其受到保护,以便抽象类的“实现”可以访问

我正在使用 CDI 但它应该与 Spring 相同:

@Mapper(
        unmappedTargetPolicy = org.mapstruct.ReportingPolicy.IGNORE,
        componentModel = "spring",
        uses = {
            // My other mappers...
        })
public abstract class MyMapper {

    @Autowired
    protected MyService myService;

    @Mappings({
        @Mapping(target="x", expression="java(myservice.findById(obj.getId())))")
    })
    public abstract Dto myMappingMethod(Object obj);

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mapstruct - 如何在生成的映射器类中注入 spring 依赖项 的相关文章

随机推荐

  • 按染色体名称排序

    我有一个染色体名称向量 q lt c 1 10 11 12 13 14 15 16 17 18 19 20 21 22 2 3 4 5 6 7 8 9 X Y M 我想将它们排序为 q lt c 1 2 3 4 5 6 7 8 9 10 1
  • 使用 htaccess 从 url 中删除 .php

    编辑 当前 htaccess 文件 Options FollowSymLinks MultiViews Turn mod rewrite on RewriteEngine On RewriteBase hide php extension
  • Gradle 构建脚本依赖项

    在中声明存储库有什么区别buildscriptgradle 构建的部分或构建的根级别 buildscript repositories mavenCentral versus repositories mavenCentral 存储库位于b
  • 使用 Composer 构建实时应用程序

    考虑一个场景 我正在构建企业 Web 应用程序 其中部分数据驻留在区块链和普通数据库中 这是授权的应用程序 bna 有两种类型的参与者管理员和普通用户 使用案例 1 客户在申请表上注册为 管理员 在此过程中 用户名和密码保存在普通数据库中
  • RecyclerView 搜索过滤器位置错误

    我使用 RecyclerView 并对其进行了过滤 但遇到了问题 当我搜索后 当我按下项目时 我得到了错误的位置 不是我搜索到的 请帮我解决这个问题 RecyclerView适配器 public class RecyclerViewAdap
  • PL/SQL 中日期比较的问题[重复]

    这个问题在这里已经有答案了 我正在研究 PL SQL 同时 我需要比较表中的日期是否是星期五 我应用了下面的代码 但它仍在执行程序的 其他 部分 谁能告诉我方法吗 begin select dt into dat from ticket b
  • 如何对具有某些特定属性的对象列表进行排序

    我有一个记录对象 public Record double simiADD 我有一个记录对象列表 我想在 simiADD 上排序 在排序列表中 simiADD 值较小的记录应首先出现 simiADD 值较大的记录应稍后出现 我想在单独的方法
  • SQL 选择最大计数

    我的表中有三列 id 街道名称 计数 某些 ID 分配有多个街道名称 计数表明相应街道分配给 ID 的频率 我如何才能获得计数最高的 ID 和街道名称 示例表 id streetname count 1 street1 80 1 stree
  • 循环遍历 Angular 表单中的字段并使用 Protractor 测试输入验证?

    我是初学者 正在尝试循环遍历 Angular 表单中的所有字段 并使用 Protractor 测试输入验证是否正常工作 到目前为止我都失败得很惨 我的伪代码如下 PSEUDO CODE FOR TEST PROCESS 1 For each
  • Android 应用程序,与插入 USB 端口的设备通信

    我正在考虑一个 Android 应用程序 可能还有一个附带的物理设备 并且我正在尝试弄清楚这是否可行 1 假设我将 Android 设备连接到 PC 上 安装在PC上的应用程序是否可以与手机上运行的应用程序进行通信 我只需要一种非常简单的数
  • php 7 中的同步块

    我来自java背景 那里有同步块 Synchronized 关键字可防止并发访问块 多个线程的代码或对象 java中的示例代码 public void addName String name synchronized this lastNa
  • Python3中带反斜杠的正则表达式

    我正在尝试使用正则表达式来匹配一个字符串中的特定子字符串 例如匹配 ue04a in ue04a abc 但似乎有些不对劲 这是我的代码 m re match ue d a z ue04a abc 返回的m是一个空对象 即使我尝试在模式中使
  • 如何在 Android 版 DropboxAPI v2 中进行身份验证?

    我刚刚开始 正在遵循本教程 https www dropbox com developers documentation java tutorial 但没有登录 没有什么会要求您输入用户名 密码 这意味着我实际上无法获得每个具有 共享到 D
  • 如何在spark 2.0中使用Cassandra Context

    在 Spark 的早期版本 如 1 6 1 中 我使用 Spark Context 创建 Cassandra Context import org apache spark Logging SparkContext SparkConf co
  • 如何从规范化的电话号码中识别国家/地区?

    我有一个国际电话号码列表和一个国家 地区电话代码列表 我想从数字中识别国家 地区 但我找不到快速而优雅的方法来做到这一点 任何想法 我唯一得到的是进行硬编码检查 例如 查看第一个数字 查看第二个数字 如果是 X 则检查第三个数字 如果第二个
  • php 俄语语言问题

    我使用curl 获取俄语语言的utf 8 页面 如果我回显文本 它会显示良好 然后我使用这样的代码 dom new domDocument load the html into the object dom gt loadHTML html
  • 自动加载常量时检测到循环依赖

    将我的操作系统更新为 Maverics 后 我无法在 Rails 中创建新项目 我总是只看到 Circular dependency detected while autoloading constant LinksController o
  • 如何从 gridview 页脚 C# 中的文本框中获取值?

    就像标题中一样 如何处理按钮单击 GridView 页脚中的哪个按钮也 文件 aspx 看起来像这样
  • 获取可执行文件的服务路径

    考虑下图 我写了下面的代码应该得到可执行文件的路径服务的一部分 如图中突出显示 基本上我下面给出的代码片段将写入另一个 cpp 文件中 该文件将生成lpa exe并且应该作为服务运行 我试过获取模块文件名如果可执行文件 lpa exe 正常
  • Mapstruct - 如何在生成的映射器类中注入 spring 依赖项

    我需要在生成的映射器实现中注入一个 spring 服务类 以便我可以通过以下方式使用它 Mapping target x expression java myservice findById id 这适用于 Mapstruct 1 0 吗