Spring 主服务器上的ConditionalUnmissingBean?

Spring 主服务器上的ConditionalUnmissingBean?,spring,spring-boot,Spring,Spring Boot,我注意到在一些spring库中,大多数bean都用@ConditionalOnMissingBean注释 与不使用任何条件并在主代码中使用@Primary相比,是否有任何优势,或者只是注释较少的问题 你可以把@ConditionalOnMissingBean看作是一种退路。如果在上下文路径中找不到其他类似的bean,那么将注册该bean @Primarybean主要处理优先级。首先将注册一个带注释的bean,这通常意味着它是唯一将被使用的bean 使用条件bean取决于您正在做什么。如果您有多个

我注意到在一些spring库中,大多数bean都用
@ConditionalOnMissingBean
注释


与不使用任何条件并在主代码中使用
@Primary
相比,是否有任何优势,或者只是注释较少的问题

你可以把
@ConditionalOnMissingBean
看作是一种退路。如果在上下文路径中找不到其他类似的bean,那么将注册该bean

@Primary
bean主要处理优先级。首先将注册一个带注释的bean,这通常意味着它是唯一将被使用的bean


使用条件bean取决于您正在做什么。如果您有多个服务用于不同的目的,并且不应同时连接,则条件连接非常适合该场景。如果你只曾经拥有或将只需要一颗豆子,或者你正在得到一颗豆子(就像来自上游库的
数据源
一样,将要连接的bean指定为唯一应该考虑的bean是很有用的。

您可以将
@conditionalnmissingbean
看作是一个回退。如果在上下文路径中找不到其他类似的bean,则会注册此bean

一个
@Primary
bean主要处理优先级。一个带优先级注释的bean将首先注册,这通常意味着它是唯一将被使用的bean


使用条件bean取决于您正在做什么。如果您有多个服务用于不同的目的,并且不应同时连接,则条件连接非常适合该场景。如果您只拥有或将只需要一个bean,或者您正在获得一个bean(就像来自上游库的
数据源一样,将要连接的bean指定为唯一应该考虑的bean非常有用。

主要
@Primary的定义(文档):

指示当一个bean被多个 候选项有资格自动关联单值依赖项。如果 候选人中只存在一个“主要”bean,它将是 自动连线值

@ConditionalOnMissingBean
(文档)的定义:

仅当指定的bean类和/或 bean工厂中尚未包含名称

简而言之:

@Primary
->要强制执行


@ConditionalOnMissingBean
->回退主要
@Primary
(文档)的定义:

指示当一个bean被多个 候选项有资格自动关联单值依赖项。如果 候选人中只存在一个“主要”bean,它将是 自动连线值

@ConditionalOnMissingBean
(文档)的定义:

仅当指定的bean类和/或 bean工厂中尚未包含名称

简而言之:

@Primary
->要强制执行

@ConditionalOnMissingBean
->回退