@Bean
    public CircuitBreakerRegistry circuitBreakerRegistry(
        EventConsumerRegistry<CircuitBreakerEvent> eventConsumerRegistry,
        RegistryEventConsumer<CircuitBreaker> circuitBreakerRegistryEventConsumer,
        @Qualifier("compositeCircuitBreakerCustomizer") CompositeCustomizer<CircuitBreakerConfigCustomizer> compositeCircuitBreakerCustomizer) {
        CircuitBreakerRegistry circuitBreakerRegistry = createCircuitBreakerRegistry(
            circuitBreakerProperties, circuitBreakerRegistryEventConsumer,
            compositeCircuitBreakerCustomizer);
        registerEventConsumer(circuitBreakerRegistry, eventConsumerRegistry);
        // then pass the map here
        initCircuitBreakerRegistry(circuitBreakerRegistry, compositeCircuitBreakerCustomizer);
        return circuitBreakerRegistry;
    }
@Test
    public void testCreateCircuitBreakerRegistryWithSharedConfigs() {
        InstanceProperties defaultProperties = new InstanceProperties();
        defaultProperties.setSlidingWindowSize(1000);
        defaultProperties.setPermittedNumberOfCallsInHalfOpenState(100);
        InstanceProperties sharedProperties = new InstanceProperties();
        sharedProperties.setSlidingWindowSize(1337);
        sharedProperties.setPermittedNumberOfCallsInHalfOpenState(1000);
        InstanceProperties backendWithDefaultConfig = new InstanceProperties();
        backendWithDefaultConfig.setBaseConfig("default");
        backendWithDefaultConfig.setPermittedNumberOfCallsInHalfOpenState(99);
        InstanceProperties backendWithSharedConfig = new InstanceProperties();
        backendWithSharedConfig.setBaseConfig("sharedConfig");
        backendWithSharedConfig.setPermittedNumberOfCallsInHalfOpenState(999);
        CircuitBreakerConfigurationProperties circuitBreakerConfigurationProperties = new CircuitBreakerConfigurationProperties();
        circuitBreakerConfigurationProperties.getConfigs().put("default", defaultProperties);
        circuitBreakerConfigurationProperties.getConfigs().put("sharedConfig", sharedProperties);
        circuitBreakerConfigurationProperties.getInstances()
            .put("backendWithDefaultConfig", backendWithDefaultConfig);
        circuitBreakerConfigurationProperties.getInstances()
            .put("backendWithSharedConfig", backendWithSharedConfig);
        CircuitBreakerConfiguration circuitBreakerConfiguration = new CircuitBreakerConfiguration(
            circuitBreakerConfigurationProperties);
        DefaultEventConsumerRegistry<CircuitBreakerEvent> eventConsumerRegistry = new DefaultEventConsumerRegistry<>();

        CircuitBreakerRegistry circuitBreakerRegistry = circuitBreakerConfiguration
            .circuitBreakerRegistry(eventConsumerRegistry,
                new CompositeRegistryEventConsumer<>(emptyList()),
                compositeCircuitBreakerCustomizerTestInstance());

        assertThat(circuitBreakerRegistry.getAllCircuitBreakers().size()).isEqualTo(2);
        // Should get default config and overwrite setPermittedNumberOfCallsInHalfOpenState
        CircuitBreaker circuitBreaker1 = circuitBreakerRegistry
            .circuitBreaker("backendWithDefaultConfig");
        assertThat(circuitBreaker1).isNotNull();
        assertThat(circuitBreaker1.getCircuitBreakerConfig().getSlidingWindowSize())
            .isEqualTo(1000);
        assertThat(
            circuitBreaker1.getCircuitBreakerConfig().getPermittedNumberOfCallsInHalfOpenState())
            .isEqualTo(99);
        // Should get shared config and overwrite setPermittedNumberOfCallsInHalfOpenState
        CircuitBreaker circuitBreaker2 = circuitBreakerRegistry
            .circuitBreaker("backendWithSharedConfig");
        assertThat(circuitBreaker2).isNotNull();
        assertThat(circuitBreaker2.getCircuitBreakerConfig().getSlidingWindowSize())
            .isEqualTo(1337);
        assertThat(
            circuitBreaker2.getCircuitBreakerConfig().getPermittedNumberOfCallsInHalfOpenState())
            .isEqualTo(999);
        // Unknown backend should get default config of Registry
        CircuitBreaker circuitBreaker3 = circuitBreakerRegistry.circuitBreaker("unknownBackend");
        assertThat(circuitBreaker3).isNotNull();
        assertThat(circuitBreaker3.getCircuitBreakerConfig().getSlidingWindowSize())
            .isEqualTo(1000);
        assertThat(eventConsumerRegistry.getAllEventConsumer()).hasSize(3);
    }