Spring Boot:加载所有在测试中实现接口的bean?

Posted

技术标签:

【中文标题】Spring Boot:加载所有在测试中实现接口的bean?【英文标题】:Spring Boot: load all beans implementing an interface in test? 【发布时间】:2020-12-19 20:22:51 【问题描述】:

我有一些接口Filter 和这个接口的一些实现。

@Test 中,我想加载所有实现Filter 的bean。

目前,我必须明确声明它们。例如:

@ContextConfiguration(classes = FilterA.class, FilterB.class)

问题:引入另一个Filter 需要为每个使用filters 的测试类添加它。

有没有更好的办法?

【问题讨论】:

【参考方案1】:

添加TestConfiguration 并在配置中声明所有实现该接口的bean。然后在您的测试中添加@Import(TestConfiguration.class)

这样,如果有额外的实现,您只需将其添加到TestConfiguration

您唯一需要注意的是使用@Qualifier 注释添加适当的接口实现。

【讨论】:

通过编写带有@Bean 注释的方法并返回new 对象? 是的。确保使用 @TestConfiguration 注释你的类。这会将其标记为测试配置类而不是常规配置类,因此不会干扰您在应用程序中的 bean 设置。

以上是关于Spring Boot:加载所有在测试中实现接口的bean?的主要内容,如果未能解决你的问题,请参考以下文章

可以使用域类在Spring Boot项目中实现UserDetails接口[关闭]

如何在spring boot中实现用户级别的特定授权?

如何在 Spring Boot 应用程序中实现长轮询 REST 端点?

如何在 Spring Boot 中实现刷新令牌

在 Spring Boot 中实现“注销”功能

如何在 Spring Boot 中实现基于角色权限的系统