java - Mapstruct 找不到 impl
问题描述
我正在使用 mapstruct 将 DTO 转换为对象,反之亦然,我得到以下异常:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.rppjs.customer.online.portal.dtos.mapper.UserMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1506)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1101)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:819)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:725)
我可以看到UserMapper.impl
正在生成,但仍然是上述异常。我的代码在这个分支 42_RenameCodeBaseToCustomerOnlinePortal 的 github 上。代码很简单,代码行数也不多。异常是作为RegistrationEndpointIT.java
.
请你看看我哪里出错了?它正在使用 gradle 包装器。
此外,运行 Application.java 时出现以下异常:
描述:
com.rppjs.customer.online.portal.endpoints.RegistrationEndpoint 中构造函数的参数 0 需要一个无法找到的 'com.rppjs.customer.online.portal.dtos.mapper.UserMapper' 类型的 bean。
行动:
考虑在您的配置中定义“com.rppjs.customer.online.portal.dtos.mapper.UserMapper”类型的 bean。
请注意,Application.java 是一个 Spring 启动应用程序。
解决方案
问题是RegistrationEndpoint
使用映射器作为构造函数参数。因为它是一个组件,所以 Spring 想要自动装配它。但春豆UserMapper
也不UserMapperImpl
是,因此例外。
你有两个选择:
删除
UserMapper
构造函数参数并使用Mappers.getMapper(UserMapper.class)
. 最好的做法是MAPPER
在您的映射器中也公开实例(请参见此处的示例)如果您需要在映射器中自动装配依赖项,您可以将映射器定义为 spring bean,如下所示:
@Mapper(componentModel = "spring")
@Component
public interface UserMapper() {
//...
}
推荐阅读
- ruby-on-rails - NoMethodError:RSpec 中 nil:NilClass 的未定义方法“customer_details”
- google-ad-manager - 我如何将项目状态从准备好更改为正在交付?
- angular - 指令上的角度动画
- terraform - 0.12upgrade 命令后的 terraform 配置不正确
- java - 没有来自数据库的 UserDetails 的 JWT 身份验证
- javascript - 如何使用 react-hooks 更改像 redux 这样的变量的值?
- bash - 如何比较字符串和空格?
- ios - 快速不变的表达
- reactjs - React-Localization setLanguage() 不更新页面
- angular - 当我在 BehaviourSubject 上调用函数时,订阅函数不会触发