spring 引导 boostrap bean 覆盖

spring boot boostrap bean override

在我的spring.factories中有这样一个定义:

org.springframework.cloud.bootstrap.BootstrapConfiguration=\
     MyBootstrapConfiguration

MyBootstrapConfiguration 我有 :

@Configuration
public class MyBootstrapConfiguration {
    
     @Bean
     @ConditionalOnMissingBean
     public ApiClient apiClient() {
         return someClient;
     }
}

现在在我的测试中(junit-5@SpringBootTest),我想覆盖这个 bean。请注意 @ConditionalOnMissingBean... 如果我能以某种方式挂钩到我的 bootstrap 启动的“之前”,以提供 ApiClient,显然不会调用该方法 apiClient我会很高兴。

请注意 MyBootstrapConfiguration 不是我可以控制的东西 - 它对我来说是不变的。对于非 bootstrap 配置,这很容易做到,但是对于 bootstrap?

有没有办法做到这一点?

给定一个测试配置 class:

@Configuration
public class TestBootstrapConfiguration implements Ordered {
    
    @Bean
    public ApiClient testApiClient() {
        return testApiClient;
    }

    @Override
    public int getOrder() {
        return Ordered.HIGHEST_PRECEDENCE;
    }
}

src/test/resources/META-INF/spring.factories

org.springframework.cloud.bootstrap.BootstrapConfiguration=\
TestBootstrapConfiguration