作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在某些映射器类中,我需要使用 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/
我是一名优秀的程序员,十分优秀!