我有一个java @Configuration
类,FOO @Bean
注明了@ConditionalOnBean(BAR.class).
正如我希望这个bean由或不是由进口商项目提供,它在任何地方都不存在在我的项目中。
在我的集成测试中,我通过Bar.class
模拟@MockBeans
。但由于某些原因,Spring-Boot -debug告诉我它没有找到它所以我的条件bean没有被加载。
我几乎可以肯定这种情况在过去是否正常,但我是否配置了额外的东西?我无法使其成功
P.S>我发现在相同的@Configuration中手动重新注册@Bean,因为条件没有看到它!有没有与他有关的已知错误?
Autoreply:这种情况的罪魁祸首是
您需要非常小心bean定义的顺序 添加,因为这些条件是基于已经的评估 到目前为止处理。因此,我们建议仅使用 @ConditionalOnBean和@ConditionalOnMissingBean注释 自动配置类(因为这些类保证在之后加载 已添加任何用户定义的bean定义。)
P.S2>我意识到Bar.class是一个界面,但我不知道为什么只要实现存在就不应该工作
P.S3>我发现MockitoTestExecutionListener是在OnBeanCondition类之后执行的。这似乎完全是我的问题。
答案 0 :(得分:0)