gpt4 book ai didi

java - 如何在Mapstruct的映射器中使用构造函数注入(inject)?

转载 作者:行者123 更新时间:2023-12-01 18:19:23 24 4
gpt4 key购买 nike

在某些映射器类中,我需要使用 Autowiring 的 ObjectMapper 将 String 转换为 JsonNode 或 verse-vera。我可以通过使用 @autowired 进行字段注入(inject)来实现我的目标。但它不适合单元测试,所以我想尝试使用构造函数注入(inject)。

我当前使用字段注入(inject)的工作代码:

@Mapper(componentModel = "spring")
public class CustomMapper {
@autowired
ObjectMapper mapper;
}

我尝试将其转换为构造函数注入(inject),以便我可以在单元测试中提供构造函数参数:

@Mapper(componentModel = "spring")
public class CustomMapper {
ObjectMapper mapper;

public CustomMapper(ObjectMapper mapper) {
this.mapper = mapper;
}
}

但是我在编译期间收到 Constructor in CustomMapper can not be apply to the给定类型 错误。我如何解决它?或者还有其他更好的方法将 String 映射到 Mapstruct 中的 JsonNode 吗?

最佳答案

构造函数注入(inject)不能在映射器定义中使用。仅在映射器实现中。

但是,对于单元测试,我建议您使用 setter 注入(inject)。

您的映射器将如下所示:

@Mapper( componentModel = "spring") 
public class CustomMapper {

protected ObjectMapper mapper;


@Autowired
public void setMapper(ObjectMapper mapper) {
this.mapper = mapper;
}

}

关于java - 如何在Mapstruct的映射器中使用构造函数注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60311841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com