如何将 spring bean 注入(custructor)到 Mapstruct 的抽象映射器中?

2023-11-21

我有下面的映射器类,我想在其中使用CounterService。我正在尝试构造函数注入,但这不起作用并且null正在打印。

@Mapper(componentModel = "spring", uses = CounterService.class, injectionStrategy = InjectionStrategy.CONSTRUCTOR)
public abstract class CarMapper {

    private CounterService counterService;

    public CarMapper(CounterService counterService) {
       this.counterService = counterService;
    }

    public abstract Car dtoToEntity(CarDto carDto);

    public CarDto entityToDto(Car car) {
        System.out.println(counterService)
        //....
        return carDto;
    }

}

实现类由mapStruct

@Component
public class CarMapperImpl extends CarMapper{

  @Override
  public Car dtoToEntity(CarDto carDto){
    //...
  }
}

如果我使用字段注入@AutoWired,这样就可以正常工作了。这意味着Spring不支持构造函数注入abstract班级。是不是因为abstract类不能直接实例化,需要子类来实例化?
有什么办法吗mapStruct可以在实现类中创建一个构造函数,如下所示:

  public CarMapperImpl(CounterService counterService){
    super(counterService);
  }

这样,构造函数注入应该可以工作。


这与春天无关。不使用超级构造函数是 MapStruct 团队经过深思熟虑的决定。

但你可以做的是使用 setter 注入。

@Mapper(componentModel = "spring", uses = CounterService.class, injectionStrategy = InjectionStrategy.CONSTRUCTOR)
public abstract class CarMapper {

    private CounterService counterService;

    public abstract Car dtoToEntity(CarDto carDto);

    public CarDto entityToDto(Car car) {
        System.out.println(counterService)
        //....
        return carDto;
    }

    @Autowired
    public void setCounterService(CounterService counterService) {
        this.counterService = counterService;
    }

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

如何将 spring bean 注入(custructor)到 Mapstruct 的抽象映射器中? 的相关文章

随机推荐

  • DevArt 的 dotConnect for Oracle 与 DataDirect 的 ADO.NET 数据提供程序

    有没有人对 DevArt 的 dotConnect for Oracle 和来自 DataDirect 的 ADO NET 数据提供程序 我们正在考虑将这些框架中提供的实体框架支持用于关键企业应用程序 我读过的一些文章提出了以下建议 Dev
  • 如何使用 javascript 将值从一个 html 页面传递到另一个 html 页面

    在第一页中 我在文本框中获取值 我需要将其传递到另一个页面 该页面分为 2 个框架 我需要在第一帧的 html 页面中显示该值 请给我一个简单的例子 我尝试过 window document getElementById inputbox1
  • 在 .Net Framework 的 Git 操作中运行 Nunit 测试

    我正在使用 NUnit Framework 来测试我的 NET Framework 项目 我想通过 GitHub Actions 运行我的测试 yml 文件 build runs on windows latest steps uses a
  • 如何使项目符号直接出现在 python 的 reportlab 包中缩进列表的文本旁边?

    我正在使用reportlab 2 6 的ListFlowable 来制作带有彩色圆圈项目符号的项目符号列表 但是 我希望项目符号显示在文本旁边 而不是与前面的非缩进文本对齐 我尝试打开 ListFlowable 源代码 但在那里找不到太多内
  • 无需开发者帐户的 Apple 推送通知

    我知道 需要注册Apple开发者帐户才能使用推送通知吗 对于已经拥有开发人员的其他人来说可能吗 为我生成证书的帐户 还是受到 Apple 限制 据我所知 还没有 我开发移动应用程序已经五年了 即使您使用的是 Firebase Cloud M
  • 将参数传递给 angularjs 过滤器

    是否可以将参数传递给过滤器函数 以便可以按任何名称进行过滤 就像是 scope weDontLike function item name console log arguments return item name name 实际上还有另
  • 使用 Ajax 和 jQuery 检查文件是否存在 - 始终返回 200 响应

    所以我需要在向客户端显示特定数据之前检查文件是否存在 使用 jQuery 我有这个 当我尝试运行该函数时 其中 example com 是我的域名 我总是收到 200 响应代码 我想知道
  • Django、Virtualenv、nginx + uwsgi导入模块wsgi报错

    我尝试使用 nginx virtualenv 和 uwsgi 在临时服务器上设置我的 django 项目 但我不断收到导入模块 wsgi 错误 如果有一个社区我可以在这里找到答案 提前谢谢大家 这是我的配置文件 我的 django 项目上的
  • 如何在SSIS包中参数化数据库连接字符串?

    我有一个在 Business Intelligence Development Studio 中构建的 SSIS 包 其中指定了源数据库和目标数据库 现在我想使用一些变量来参数化数据库连接并在命令行中运行包 我尝试用变量 User Sour
  • 模拟和网络凭据

    我需要通过一个NetworkCredential对象 其中包含当前模拟的用户从 ASP NET 应用程序访问 Web 服务的凭据 我的代码如下所示 WindowsIdentity windowsIdentity HttpContext Cu
  • Git - 暂时保存当前工作

    我正在 master 分支上添加一个功能 更改几个文件后 我意识到我需要在没有更改的情况下检查输出 我能想到的办法是 提交当前更改 签出并切换到新分支 在新分支中 git reset hard HEAD 这样我就可以回到原来的代码了 尝试代
  • 以步进增量滚动水平 UIScrollView?

    我有一个可以水平滚动的 UIScrollView 可滚动的内容按列显示 有没有办法使滚动仅以步进增量而不是像素移动 即一次移动一列 Diagram 是的 有 yourScrollView pagingEnabled YES 检查UI滚动视图
  • Python3 以网络摄像头 fps 处理并显示网络摄像头流

    如何读取相机并以相机帧速率显示图像 我想连续从网络摄像头读取图像 进行一些快速预处理 然后在窗口中显示图像 这应该以我的网络摄像头提供的帧速率 29 fps 运行 OpenCV GUI 和 Tkinter GUI 似乎太慢 无法以这样的帧速
  • MVC 使用 Html.CheckBoxFor 和 nullable Bool

    我有一个复选框 我想在与称为公共的字段相关的视图上显示该复选框 该复选框基本上说明特定行是否是公共的 在数据库中 这是一个位字段 但由于表以前的工作方式 它允许为空 我正在使用 Html CheckBoxFor 但它抱怨这个字段 因为在系统
  • 如何查找 int 数组中元素的索引?

    如何在 Java 类型数组中找到某个值的索引int 我尝试使用Arrays binarySearch在我的未排序数组中 它有时只给出正确的答案 Integer array 1 2 3 4 5 6 Arrays asList array in
  • std::fstream 缓冲与手动缓冲(为什么手动缓冲有 10 倍增益)?

    我测试了两种写入配置 Fstream缓冲 Initialization const unsigned int length 8192 char buffer length std ofstream stream stream rdbuf g
  • 使用 php 以人类可读的格式从数据库表中打印餐厅营业时间

    我有一张表格 上面列出了餐馆的营业时间 这些列是 id eateries id day of week start time 和 end time 每个餐馆在表中都会出现多次 因为每天都有一个单独的条目 有关更多详细信息 请参阅上一个问题
  • Math.random() 什么时候开始重复?

    我在 nodejs 中进行了这个简单的测试 我让它运行了一整夜 并且无法让 Math random 重复 我意识到这些值 甚至整个序列 迟早会重复 但是对于何时发生有合理的预期吗 let v for let i 0 i let r Math
  • .net PDF 查看器控件[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我们正在寻找适用于 WPF
  • 如何将 spring bean 注入(custructor)到 Mapstruct 的抽象映射器中?

    我有下面的映射器类 我想在其中使用CounterService 我正在尝试构造函数注入 但这不起作用并且null正在打印 Mapper componentModel spring uses CounterService class inje