请教一个 Springboot bean 注入的问题?

2022-09-08 22:34:09 +08:00
 gzk329

项目中一个 common 模块是非 SpringBoot 的 , 一个业务模块是 SpringBoot 的 Common 模块的一个工具类,需要注入到业务模块中 为啥总是注入不了,显示为 null 啊? 求帮助

1747 次点击
所在节点    Java
9 条回复
wangsongyan
2022-09-08 22:36:15 +08:00
打断点确定下工具类有没有实例化
gzk329
2022-09-08 22:37:18 +08:00
单元测试中 @InjectMocks 了 业务模块中的一个类 bean1 ,common 模块中的工具类是注入到这个 bean1 的,然后在测试类中,对注入来的对象也使用了 @MockBean ,debug 的时候就是一直显示为 null ,并没有注入
commoccoom
2022-09-08 22:42:02 +08:00
第三方库类可能无法使用自动注解,需要手动配置 JavaConfig 注入
gzk329
2022-09-08 22:50:16 +08:00
@commoccoom 手动注入 会显示 bean 冲突异常 Unable to register mock bean xxx expected a single matching bean to replace but found [xxxx getxxxx]
gzk329
2022-09-08 22:50:55 +08:00
而且这个工具类也是我自己写的 common 模块单元测试也写了 都正常的
commoccoom
2022-09-08 22:59:27 +08:00
gzk329
2022-09-08 23:12:18 +08:00
@commoccoom 谢谢你的回复 我好像明白了 和 spring 没关系 是我的 Mock 没用好
mazai
2022-09-09 11:43:28 +08:00
@InjectMocks 应该是 mockito 提供的注解吧,要和 @Mock 配合使用,测试类上加 @ExtendWith(MockitoExtension.class)就可以了
gzk329
2022-09-14 21:28:59 +08:00
这个我也解决了 是和我另一个帖子是同一个问题 MOCK 单元测试的时候 多层怎么既保留部分依赖的真实方法 有 mock 模拟一部分 我是 @Resource 和 @InjectMock 一起使用 既注入了测试对象 又能 mock 模拟一部分数据

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/878749

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX