java - 创建外观组件时将特定组件添加到 Spring Context
问题描述
我不想让我的一些类变成@Autowire
很多小@Component
的 s,我想创建一个@Component
可以收集并转发到更小@Component
的 s 的单曲。
编码本身并不太难,但是当涉及到测试时,它变得很麻烦,因为现在我必须将它添加到@ContextConfiguration(classes)
. 有没有办法让我不必单独管理它?
使用@ComponentScan
添加了我可能不想要的整个包,因为它会触发更多@MockBean
的创建。
解决方案
在我看来,您正在寻找的是@Configuration + @Bean
. @Bean
您可以通过使用简单的 pojo-s 而不是 spring 管理的 bean来初始化完整的链,而不是使用 @Component 标记所有嵌套的子组件。当然,最终结果将是一个 spring 管理的 bean,但是在初始化过程中,您可以从任何有 spring 或没有 spring 的地方初始化它。
关于 ComponetScan。通常,如果我只想加载某个部分,我会使用我想要的 conponenbt 扫描的显式模式创建注释,然后在我想要的域中使用它。
例如,假设我们有两组 Mapper 类,一组与订单有关,另一组与库存有关。我可以在它们上创建带有适当组件扫描注释的注释@EnableOrderMappers
和注释。@EnableInventoryMappers
推荐阅读
- flutter - 使用 http 请求获取嵌套 Json 返回 null
- mysql - 与node js应用程序连接时如何解决mysql错误号1064?
- kotlin - 相同类的 Kotlin 密封类
- java - Java 运行时出现终端错误,无法识别类文件版本 > 52.0
- docker - 使用 aws-sam-cli 时出错 | 未能在公司代理后面拉取 docker 映像
- html - 创建动态网格时防止 div 增长/拉伸
- ruby-on-rails - 插入 html_tag 类属性 - 格式错误
- c# - VSTO Outlook 插件 - 上传大文件会阻止 Outlook 直到进程完成
- ios - 测试 iOS / MacOS X 的应用内购买和测试帐户的双因素身份验证
- .net - VSCode + 非核心网络框架