Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >@SpringBootTest使用MapStruct需要Impl

@SpringBootTest使用MapStruct需要Impl
EN

Stack Overflow用户
提问于 2020-11-05 02:53:16
回答 3查看 1.3K关注 0票数 1

我有以下测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@SpringBootTest(classes = {SomeService.class, DtoMapperImpl.class})
class SomeServiceTest {

下列地图绘制者:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Mapper(componentModel = "spring")
public interface DtoMapper {
    EntityDto toDto(Entity entity);
}

我不会更改包(这意味着DtoMapperImplDtoMapper在同一个包中)

一旦我更改Impl接口,我的测试就失败了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@SpringBootTest(classes = {SomeService.class, DtoMapper.class})
class SomeServiceTest {

由: org.springframework.beans.factory.UnsatisfiedDependencyException:错误创建名为“someService”的bean引起的

:通过构造函数参数2表示的不满意的依赖关系;嵌套的异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:,没有“DtoMapper”类型的限定bean :预期至少有一个bean,它可以作为自动选择。依赖性注释:{}

你能建议解决这个问题的最佳方法吗?我在MapStruct 1.3.1.最后

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-11-05 23:48:21

这个问题实际上与MapStruct无关,而是与如何使用SpringBootTest#classes有关。

classes in SpringBootTest是为了提供应该用于在测试中加载的组件。

来自JavaDoc:

用于加载ApplicationContext的组件类。也可以使用@ContextConfiguration(classes=...)指定。如果未定义显式类,则在返回到@Configuration搜索之前,测试将查找嵌套的@SpringBootConfiguration类。返回:用于加载应用程序上下文的组件类。

在您的例子中,您有两个类:

  • SomeService --我假设它是一个带有@Service注释的类,Spring将正确地加载it
  • DtoMapper --这是一个MapStruct映射器,它是一个接口,而不是一个组件。您需要用于测试的组件是DtoMapperImpl

您有几种方法可以解决这个问题:

使用Impl类

您可以在DtoMapperImpl中使用SpringBootTest#classes ( Spring类),然后您的测试将加载正确的组件

使用将组件扫描映射程序的自定义配置类。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@TestConfiguration
@ComponentScan("com.example.mapper")
public class MappersConfig {

}

然后在您的SpringBootTest#classes中使用这个。例如。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@SpringBootTest(classes = {SomeService.class, MappersConfig.class})
class SomeServiceTest {
   ...
}
票数 2
EN

Stack Overflow用户

发布于 2020-11-05 08:17:42

创建以下配置(应该指向映射器所在的位置):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@TestConfiguration
@ComponentScan("some.package.mapper")
public class MappersConfig {
}

并修改切片:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@SpringBootTest(classes = {SomeService.class, MappersConfig.class})
class SomeServiceTest {
票数 0
EN

Stack Overflow用户

发布于 2022-12-01 15:05:15

我建议对接受的答案做一些改进,这样您就不必将包名写成硬编码字符串,而是使用ComponentScan basePackageClasses:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@TestConfiguration
// @ComponentScan("some.package.mapper")
@ComponentScan(basePackageClasses = DtoMapper.class)
public class MappersConfig {
}

但是,这种方法(以及接受的答案)有一个明显的缺点:整个包将被扫描,其中可能包含不想要的类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64695709

复制
相关文章
DRAM:实现国产可替代的愿望挺难的
如今,“1bit只要1美元”的厂商早已退出DRAM市场, “三分天下”的局面难以打破,国产内存的希望如星星之火,尚不可燎原。
AI 电堂
2021/08/23
9520
DRAM:实现国产可替代的愿望挺难的
良好的BUG报告可以为您节省宝贵的时间。
一份糟糕的BUG记录不仅烦人,而且大大增加了时间长的开销。为你的下一份BUG报考增加更多更详细的信息,可以使你更快速的定位BUG从而节省时间成本。
疯狂的技术宅
2019/03/27
3700
良好的BUG报告可以为您节省宝贵的时间。
你以为Spring Boot统一异常处理能拦截所有的异常?
这类图相信大家没少见,Spring Boot 只要出错,体现在页面上的就是这个。如果你用Postman之类的测试出了异常则是:
码农小胖哥
2021/05/14
2.5K0
抢了个票,还以为发现了12306的系统BUG
12306在很久以前,对购票和乘车规则是有限制的,当同一乘车人的两张车票涉及的行程出现冲突时,会拒绝购票请求。
Coder的技术之路
2022/09/19
7380
抢了个票,还以为发现了12306的系统BUG
PostgreSQL 为什么Archive 缓慢或不归档,问题的原因在哪里
POSTGRESQL 中是可以对日志进行ARCHIVE 的, 但经常会有一个问题就是ARCHIVE 的速度好像经常没有产生WAL 日志的速度快,有的时候很长一段时间WALLOG 都没有被ARCHIVE, 原因是什么.
AustinDatabases
2020/11/26
1.9K0
jquery 列表可拖动排序 sortable
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jQuery UI Sortable</title> <style type="text/css"> #myList{ width: 80px; background: #EEE; padding: 5px; list-style: none; } #myList a{ text-decoration: none; color: #0077B0; } #myList a:hover{ text-decoration: underline; } #myList .qlink{ font-size: 12px; color: #666; margin-left: 10px; } </style> </head> <body> <ul id="myList"> <li><a href="#">心情</a></li> <li> <a href="#">相册</a> <a href="#" class="qlink">上传</a> </li> <li> <a href="#">日志</a> <a href="#" class="qlink">发表</a> </li> <li><a href="#">投票</a></li> <li><a href="#">分享</a></li> <li><a href="#">群组</a></li> </ul>
用户5760343
2019/10/10
2.4K0
jquery 列表可拖动排序 sortable
POSTGRESQL 以为是BUG,其实是PG的特性 与感谢
昨天的文字中,提到了一个自己认为是POSTGRESQL 问题的文字,就是在建立表的时候,在输错类型后,还是会通过,具体请参见昨天的文字.
AustinDatabases
2021/05/11
6960
POSTGRESQL  以为是BUG,其实是PG的特性 与感谢
归档
归档 基本概念 - 对象归档是指将对象写入文件保存在硬盘上,当再次重新打开程序时,可以还原这些对象。你也可以称他为对象序列化,对象持久化。 数据持久性的方式 NSKeyedArchiver --- 对象归档 NSUserDefaults 属性列表化(NSArray、NSDictionary保存文件) SQlite数据库、Core Data数据库 归档的形式 对Foundation库中对象进行归档 自定义对象进行归档(需要实现归档协议,NSCoding) 归档后的文件是加密的,属性列表是明文的。属性列表也不
用户1941540
2018/05/11
1.2K0
归档
tar是“tape archive”(磁带存档)的简称,它出现在还没有软盘驱动器、硬盘和 光盘驱动器的计算机早期阶段,随着时间的推移, tar命令逐渐变为一个将很多文件进行存档的工具,目前许多用于Linux操作系统的程序就是打包为tar档案文件的形式。 在Linux里面,tar一般和其他没有文件管理的压缩算法文件结合使用,用tar打包整个文件目录结构成一个文件,再用gz,bzip等压缩算法压缩成一次。也是Linux常见的压缩归档的处理方法
酷走天涯
2019/05/26
1.1K0
关于Linux的grep -f命令,我以为我发现了bug
今天,我像往常一样提取基因组的样本,我有一堆样本的ID,需要从所有的基因型的文件中提取出来。
邓飞
2021/09/03
1.2K0
智能图形和列表在哪里呢?慢慢学会SmartArt智能图形和列表。
1、点击[插入] 2、点击[SmartArt] 3、点击[循环] 4、点击[图片] 5、点击[确定]
裴来凡
2022/05/28
9960
智能图形和列表在哪里呢?慢慢学会SmartArt智能图形和列表。
可迭代对象 python_列表是可迭代对象吗
引出问题: ​如下面所示,存在一个类,并且产生了一个对象,现在想用for循环实现对象的迭代,结果报错了
全栈程序员站长
2022/09/21
9160
Bug 看你往哪里逃?我会让你无所遁形
编程中的 Bug ,Error 等各种报错是不可避免的,如果有一个好的 logcat 工具绝对可以帮助大家快速的定位到错误,并高效的找到解决办法。
非著名程序员
2018/07/30
3330
Bug 看你往哪里逃?我会让你无所遁形
通过RMAN设置standby接收日志后主库归档日志才可删除
因为Oracle archivelog会不断生产,一般会设置定期清理archivelog的排程,类似下面。
PHP开发工程师
2021/05/25
1.5K0
【C++11】统一的 {} 列表初始化
​ 在 C++98 中,标准允许使用花括号 {} 对数组或者结构体元素进行统一的列表初始值设定。比如:
利刃大大
2025/03/01
980
【C++11】统一的 {} 列表初始化
主动推理 与 信念-愿望-意图 (BDI)
Active inference models do not contradict folk psychology
CreateAMind
2022/11/22
6950
主动推理 与 信念-愿望-意图 (BDI)
我以为发现了Android 14系统中的一个bug,然而...
事情的起因是这样的,某天工作群里,我看到我们部门的同事guting发了这样一条消息。
用户1158055
2024/01/10
8980
我以为发现了Android 14系统中的一个bug,然而...
tar - 归档
参数 说明 z 创建 gzip 格式的压缩包 j 创建 bz2 格式的压缩包 J 创建 xz 格式的压缩包 x 解压一个压缩包 c 创建一个压缩包 t 查看压缩包的内容 r 把文件追加到压缩包末尾 u 用新的文件替换压缩包中的旧文件 # 创建一个压缩包,排除一些文件 tar zcvf data.tar.gz -T /root/aa -X /root/bb -T:指定需要压缩的目录或文件,需要绝对路径 -X:指定需要排除的文件或目录,需要绝对路径
陳斯托洛夫斯記
2022/10/27
1.4K0
PostgreSQL 13.0-13.15 功能更新和bug fixed列表
在总结了PostgreSQL 12 14 15 16版本的release note和bug fixed的细节后,此次总结最后的一部分 PG13的release note里面的信息。PG13 有15个版本,我们从PG13.1 开始
AustinDatabases
2024/11/25
1490
PostgreSQL 13.0-13.15 功能更新和bug fixed列表
从MYSQL 数据库归档 到 归档设计
到数据归档,很多人的第一个概念就是,不就是无用的数据,换个地方放吗,直接拷贝,删除不就得了,有那么麻烦。
AustinDatabases
2020/04/24
5.1K0

相似问题

我在哪里为木星小程序归档bug?

10

桌面菜单在哪里归档?

10

在哪里可以为iPad买到Ubuntu?

20

统一设置存储在哪里?

10

哪里可以为Ubuntu 20.04找到GNU 4.3

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文