Spring boot @ConditionalOnBean 未检测到 bean 丢失,抛出异常“No Qualifying bean of type”

Cun*_*eyt 5 dependency-injection conditional-statements spring-boot

有这个 @Configuration 类,需要一个实现 JmsProperties 的 bean,该 bean 在 @ConditionalOnBean 中声明

@Configuration
@ConditionalOnBean(JmsProperties.class)
public class JmsConfiguration {

    @Inject
    private JmsProperties properties;
    ...
}
Run Code Online (Sandbox Code Playgroud)

获取异常:

   Caused by: 
   org.springframework.beans.factory.NoSuchBeanDefinitionException:        
   No qualifying bean of type [com.....JmsProperties] found for dependency: 
Run Code Online (Sandbox Code Playgroud)

@ConditionalOnBean 不是应该检测到这个缺失的 bean 并且不首先尝试注入依赖项吗?

预先感谢您的任何指点

Ste*_*oll 6

您已在Spring Boot 跟踪器上交叉发布,开发人员已回复:

@ConditionalOnBean在处理完所有配置类后进行评估,即您不能使用它来使整个配置类以另一个 bean 的存在为条件。但是,您可以在必须使所有配置的 bean 以另一个 bean 的存在为条件的情况下使用它。