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接口[关闭]