给定多个实现,Spring 如何决定注入哪个实现?

问题描述 投票:0回答:1

我在我们的代码库中看到,我们直接在构造函数中注入依赖项,而不是使用

@Autowired
。我的问题是——当有多个实现时,Spring 如何确定要注入哪个依赖项?这是一些示例代码:

  public class UserDetailsService {
    private final RestTemplate restTemplate;
    
    public UserDetailsService(RestTemplate restTemplate) {
     this.restTemplate = restTemplate;
    }

假设有 2 个不同的自定义

RestTemplate
配置注释类返回它的 2 个不同变体。 Spring 是否偏爱其中一种实现,还是随机选择一种实现并采用它?我知道我们可以使用
@Autowired
@Qualifier
来选择我们的偏好,但是 Spring 的默认偏好是什么或者是否有任何偏好?

java spring spring-boot resttemplate
1个回答
0
投票

如果有多个bean符合注入依赖项的条件,那么Spring将出现错误。它不会自己选择一个。有多种定义标准的方法,例如使用特定类型而不是通用类型或使用

@Qualifier
@Primary
等。但如果无法根据所有可用标准计算出偏好,则这是损坏的配置,必须修复。

© www.soinside.com 2019 - 2024. All rights reserved.