43.3.2 Bean条件

@ConditionalOnBean@ConditionalOnMissingBean注解可以根据特定类是否存在决定bean的包含,你可以使用value属性指定beans(by type),也可以使用name定义beans(by name),search属性用于限制搜索beans时需要考虑的ApplicationContext层次。

你需要注意bean定义添加的顺序,因为这些条件的计算是基于目前处理内容的。出于这个原因,我们推荐在自动配置类上只使用@ConditionalOnBean@ConditionalOnMissingBean注解(即使保证它们在其他用户定义的beans后加载)。

@ConditionalOnBean@ConditionalOnMissingBean不会阻止@Configuration类的创建,在类级别使用那些conditions跟使用注解标记每个@Bean方法是等价的。