diff --git a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/BusKafkaAutoConfiguration.java b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/BusKafkaAutoConfiguration.java new file mode 100644 index 0000000000..e80d908a28 --- /dev/null +++ b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/BusKafkaAutoConfiguration.java @@ -0,0 +1,79 @@ +/* + * Copyright 2013-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.kubernetes.configuration.watcher; + +import io.kubernetes.client.openapi.apis.CoreV1Api; + +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnCloudPlatform; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.cloud.CloudPlatform; +import org.springframework.cloud.function.context.config.ContextFunctionCatalogAutoConfiguration; +import org.springframework.cloud.kubernetes.client.config.KubernetesClientConfigMapPropertySourceLocator; +import org.springframework.cloud.kubernetes.client.config.KubernetesClientSecretsPropertySourceLocator; +import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider; +import org.springframework.cloud.kubernetes.commons.config.reload.ConfigReloadProperties; +import org.springframework.cloud.kubernetes.commons.config.reload.ConfigurationUpdateStrategy; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Profile; +import org.springframework.core.env.AbstractEnvironment; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import static org.springframework.cloud.kubernetes.configuration.watcher.ConfigurationWatcherConfigurationProperties.KAFKA; + +/** + * @author wind57 + */ +@Configuration(proxyBeanMethods = false) +@ConditionalOnCloudPlatform(CloudPlatform.KUBERNETES) +@Profile(KAFKA) +@Import(ContextFunctionCatalogAutoConfiguration.class) +@AutoConfigureAfter(RefreshTriggerAutoConfiguration.class) +class BusKafkaAutoConfiguration { + + @Bean + @ConditionalOnMissingBean(ConfigMapWatcherChangeDetector.class) + @ConditionalOnBean(KubernetesClientConfigMapPropertySourceLocator.class) + ConfigMapWatcherChangeDetector busConfigMapChangeWatcher(AbstractEnvironment environment, CoreV1Api coreV1Api, + KubernetesClientConfigMapPropertySourceLocator configMapPropertySourceLocator, + ConfigReloadProperties properties, KubernetesNamespaceProvider namespaceProvider, + ConfigurationUpdateStrategy strategy, + ConfigurationWatcherConfigurationProperties k8SConfigurationProperties, + ThreadPoolTaskExecutor threadFactory, BusRefreshTrigger busRefreshTrigger) { + return new BusEventBasedConfigMapWatcherChangeDetector(coreV1Api, environment, properties, strategy, + configMapPropertySourceLocator, namespaceProvider, k8SConfigurationProperties, threadFactory, + busRefreshTrigger); + } + + @Bean + @ConditionalOnMissingBean(SecretsWatcherChangeDetector.class) + @ConditionalOnBean(KubernetesClientSecretsPropertySourceLocator.class) + SecretsWatcherChangeDetector busSecretsChangeWatcher(AbstractEnvironment environment, CoreV1Api coreV1Api, + KubernetesClientSecretsPropertySourceLocator secretsPropertySourceLocator, + ConfigReloadProperties properties, ConfigurationUpdateStrategy strategy, + ConfigurationWatcherConfigurationProperties k8SConfigurationProperties, + ThreadPoolTaskExecutor threadFactory, KubernetesNamespaceProvider namespaceProvider, + BusRefreshTrigger busRefreshTrigger) { + return new BusEventBasedSecretsWatcherChangeDetector(coreV1Api, environment, properties, strategy, + secretsPropertySourceLocator, namespaceProvider, k8SConfigurationProperties, threadFactory, + busRefreshTrigger); + } + +} diff --git a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/BusRabbitAutoConfiguration.java b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/BusRabbitAutoConfiguration.java new file mode 100644 index 0000000000..1f755f7e73 --- /dev/null +++ b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/BusRabbitAutoConfiguration.java @@ -0,0 +1,80 @@ +/* + * Copyright 2013-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.kubernetes.configuration.watcher; + +import io.kubernetes.client.openapi.apis.CoreV1Api; + +import org.springframework.boot.actuate.autoconfigure.amqp.RabbitHealthContributorAutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnCloudPlatform; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.cloud.CloudPlatform; +import org.springframework.cloud.function.context.config.ContextFunctionCatalogAutoConfiguration; +import org.springframework.cloud.kubernetes.client.config.KubernetesClientConfigMapPropertySourceLocator; +import org.springframework.cloud.kubernetes.client.config.KubernetesClientSecretsPropertySourceLocator; +import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider; +import org.springframework.cloud.kubernetes.commons.config.reload.ConfigReloadProperties; +import org.springframework.cloud.kubernetes.commons.config.reload.ConfigurationUpdateStrategy; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Profile; +import org.springframework.core.env.AbstractEnvironment; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import static org.springframework.cloud.kubernetes.configuration.watcher.ConfigurationWatcherConfigurationProperties.AMQP; + +/** + * @author wind57 + */ +@Configuration(proxyBeanMethods = false) +@ConditionalOnCloudPlatform(CloudPlatform.KUBERNETES) +@Profile(AMQP) +@Import({ ContextFunctionCatalogAutoConfiguration.class, RabbitHealthContributorAutoConfiguration.class }) +@AutoConfigureAfter(RefreshTriggerAutoConfiguration.class) +class BusRabbitAutoConfiguration { + + @Bean + @ConditionalOnMissingBean(ConfigMapWatcherChangeDetector.class) + @ConditionalOnBean(KubernetesClientConfigMapPropertySourceLocator.class) + ConfigMapWatcherChangeDetector busConfigMapChangeWatcher(AbstractEnvironment environment, CoreV1Api coreV1Api, + KubernetesClientConfigMapPropertySourceLocator configMapPropertySourceLocator, + KubernetesNamespaceProvider kubernetesNamespaceProvider, ConfigReloadProperties properties, + ConfigurationUpdateStrategy strategy, + ConfigurationWatcherConfigurationProperties k8SConfigurationProperties, + ThreadPoolTaskExecutor threadFactory, BusRefreshTrigger busRefreshTrigger) { + return new BusEventBasedConfigMapWatcherChangeDetector(coreV1Api, environment, properties, strategy, + configMapPropertySourceLocator, kubernetesNamespaceProvider, k8SConfigurationProperties, threadFactory, + busRefreshTrigger); + } + + @Bean + @ConditionalOnMissingBean(SecretsWatcherChangeDetector.class) + @ConditionalOnBean(KubernetesClientSecretsPropertySourceLocator.class) + SecretsWatcherChangeDetector busSecretsChangeWatcher(AbstractEnvironment environment, CoreV1Api coreV1Api, + KubernetesClientSecretsPropertySourceLocator secretsPropertySourceLocator, + ConfigReloadProperties properties, KubernetesNamespaceProvider kubernetesNamespaceProvider, + ConfigurationUpdateStrategy strategy, + ConfigurationWatcherConfigurationProperties k8SConfigurationProperties, + ThreadPoolTaskExecutor threadFactory, BusRefreshTrigger busRefreshTrigger) { + return new BusEventBasedSecretsWatcherChangeDetector(coreV1Api, environment, properties, strategy, + secretsPropertySourceLocator, kubernetesNamespaceProvider, k8SConfigurationProperties, threadFactory, + busRefreshTrigger); + } + +} diff --git a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/ConfigurationWatcherAutoConfiguration.java b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/ConfigurationWatcherAutoConfiguration.java index a3c6dd6108..30c7890127 100644 --- a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/ConfigurationWatcherAutoConfiguration.java +++ b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/ConfigurationWatcherAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2013-2020 the original author or authors. + * Copyright 2013-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,24 +18,21 @@ import io.kubernetes.client.openapi.apis.CoreV1Api; -import org.springframework.boot.actuate.autoconfigure.amqp.RabbitHealthContributorAutoConfiguration; -import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnCloudPlatform; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.cloud.CloudPlatform; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.cloud.bus.BusProperties; -import org.springframework.cloud.function.context.config.ContextFunctionCatalogAutoConfiguration; +import org.springframework.cloud.bus.BusStreamAutoConfiguration; import org.springframework.cloud.kubernetes.client.config.KubernetesClientConfigMapPropertySourceLocator; import org.springframework.cloud.kubernetes.client.config.KubernetesClientSecretsPropertySourceLocator; -import org.springframework.cloud.kubernetes.client.discovery.reactive.KubernetesInformerReactiveDiscoveryClient; import org.springframework.cloud.kubernetes.commons.KubernetesNamespaceProvider; import org.springframework.cloud.kubernetes.commons.config.reload.ConfigReloadProperties; import org.springframework.cloud.kubernetes.commons.config.reload.ConfigurationUpdateStrategy; -import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; -import org.springframework.context.annotation.Profile; import org.springframework.core.env.AbstractEnvironment; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.web.reactive.function.client.WebClient; @@ -45,14 +42,13 @@ * @author Kris Iyer */ @Configuration(proxyBeanMethods = false) +@ConditionalOnCloudPlatform(CloudPlatform.KUBERNETES) @EnableConfigurationProperties({ ConfigurationWatcherConfigurationProperties.class }) -@Import({ ConfigurationWatcherAutoConfiguration.RefreshTriggerConfiguration.class }) +@AutoConfigureAfter({ RefreshTriggerAutoConfiguration.class, BusRabbitAutoConfiguration.class, + BusKafkaAutoConfiguration.class }) +@AutoConfigureBefore(BusStreamAutoConfiguration.class) public class ConfigurationWatcherAutoConfiguration { - private static final String AMQP = "bus-amqp"; - - private static final String KAFKA = "bus-kafka"; - @Bean @ConditionalOnMissingBean public WebClient webClient(WebClient.Builder webClientBuilder) { @@ -87,95 +83,4 @@ public SecretsWatcherChangeDetector httpBasedSecretsWatchChangeDetector(Abstract httpRefreshTrigger); } - @Configuration - @Profile(AMQP) - @Import({ ContextFunctionCatalogAutoConfiguration.class, RabbitHealthContributorAutoConfiguration.class, - RefreshTriggerConfiguration.class }) - static class BusRabbitConfiguration { - - @Bean - @ConditionalOnMissingBean(ConfigMapWatcherChangeDetector.class) - @ConditionalOnBean(KubernetesClientConfigMapPropertySourceLocator.class) - public ConfigMapWatcherChangeDetector busConfigMapChangeWatcher(AbstractEnvironment environment, - CoreV1Api coreV1Api, KubernetesClientConfigMapPropertySourceLocator configMapPropertySourceLocator, - KubernetesNamespaceProvider kubernetesNamespaceProvider, ConfigReloadProperties properties, - ConfigurationUpdateStrategy strategy, - ConfigurationWatcherConfigurationProperties k8SConfigurationProperties, - ThreadPoolTaskExecutor threadFactory, BusRefreshTrigger busRefreshTrigger) { - return new BusEventBasedConfigMapWatcherChangeDetector(coreV1Api, environment, properties, strategy, - configMapPropertySourceLocator, kubernetesNamespaceProvider, k8SConfigurationProperties, - threadFactory, busRefreshTrigger); - } - - @Bean - @ConditionalOnMissingBean(SecretsWatcherChangeDetector.class) - @ConditionalOnBean(KubernetesClientSecretsPropertySourceLocator.class) - public SecretsWatcherChangeDetector busSecretsChangeWatcher(AbstractEnvironment environment, - CoreV1Api coreV1Api, KubernetesClientSecretsPropertySourceLocator secretsPropertySourceLocator, - ConfigReloadProperties properties, KubernetesNamespaceProvider kubernetesNamespaceProvider, - ConfigurationUpdateStrategy strategy, - ConfigurationWatcherConfigurationProperties k8SConfigurationProperties, - ThreadPoolTaskExecutor threadFactory, BusRefreshTrigger busRefreshTrigger) { - return new BusEventBasedSecretsWatcherChangeDetector(coreV1Api, environment, properties, strategy, - secretsPropertySourceLocator, kubernetesNamespaceProvider, k8SConfigurationProperties, - threadFactory, busRefreshTrigger); - } - - } - - @Configuration - @Profile(KAFKA) - @Import({ ContextFunctionCatalogAutoConfiguration.class, RefreshTriggerConfiguration.class }) - static class BusKafkaConfiguration { - - @Bean - @ConditionalOnMissingBean(ConfigMapWatcherChangeDetector.class) - @ConditionalOnBean(KubernetesClientConfigMapPropertySourceLocator.class) - public ConfigMapWatcherChangeDetector busConfigMapChangeWatcher(AbstractEnvironment environment, - CoreV1Api coreV1Api, KubernetesClientConfigMapPropertySourceLocator configMapPropertySourceLocator, - ConfigReloadProperties properties, KubernetesNamespaceProvider namespaceProvider, - ConfigurationUpdateStrategy strategy, - ConfigurationWatcherConfigurationProperties k8SConfigurationProperties, - ThreadPoolTaskExecutor threadFactory, BusRefreshTrigger busRefreshTrigger) { - return new BusEventBasedConfigMapWatcherChangeDetector(coreV1Api, environment, properties, strategy, - configMapPropertySourceLocator, namespaceProvider, k8SConfigurationProperties, threadFactory, - busRefreshTrigger); - } - - @Bean - @ConditionalOnMissingBean(SecretsWatcherChangeDetector.class) - @ConditionalOnBean(KubernetesClientSecretsPropertySourceLocator.class) - public SecretsWatcherChangeDetector busSecretsChangeWatcher(AbstractEnvironment environment, - CoreV1Api coreV1Api, KubernetesClientSecretsPropertySourceLocator secretsPropertySourceLocator, - ConfigReloadProperties properties, ConfigurationUpdateStrategy strategy, - ConfigurationWatcherConfigurationProperties k8SConfigurationProperties, - ThreadPoolTaskExecutor threadFactory, KubernetesNamespaceProvider namespaceProvider, - BusRefreshTrigger busRefreshTrigger) { - return new BusEventBasedSecretsWatcherChangeDetector(coreV1Api, environment, properties, strategy, - secretsPropertySourceLocator, namespaceProvider, k8SConfigurationProperties, threadFactory, - busRefreshTrigger); - } - - } - - @AutoConfiguration - static class RefreshTriggerConfiguration { - - @Bean - @ConditionalOnMissingBean - @Profile({ AMQP, KAFKA }) - public BusRefreshTrigger busRefreshTrigger(ApplicationEventPublisher applicationEventPublisher, - BusProperties busProperties) { - return new BusRefreshTrigger(applicationEventPublisher, busProperties.getId()); - } - - @Bean - @ConditionalOnMissingBean - public HttpRefreshTrigger httpRefreshTrigger(KubernetesInformerReactiveDiscoveryClient client, - ConfigurationWatcherConfigurationProperties properties, WebClient webClient) { - return new HttpRefreshTrigger(client, properties, webClient); - } - - } - } diff --git a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/ConfigurationWatcherConfigurationProperties.java b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/ConfigurationWatcherConfigurationProperties.java index ef39258427..47e9474d5b 100644 --- a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/ConfigurationWatcherConfigurationProperties.java +++ b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/ConfigurationWatcherConfigurationProperties.java @@ -28,6 +28,16 @@ @ConfigurationProperties("spring.cloud.kubernetes.configuration.watcher") public class ConfigurationWatcherConfigurationProperties { + /** + * AMQP profile name. + */ + public static final String AMQP = "bus-amqp"; + + /** + * Kafka profile name. + */ + public static final String KAFKA = "bus-kafka"; + /** * label to enable refresh/restart when using configmaps. */ diff --git a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/RefreshTriggerAutoConfiguration.java b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/RefreshTriggerAutoConfiguration.java new file mode 100644 index 0000000000..40c6477f50 --- /dev/null +++ b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/java/org/springframework/cloud/kubernetes/configuration/watcher/RefreshTriggerAutoConfiguration.java @@ -0,0 +1,55 @@ +/* + * Copyright 2013-2024 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.kubernetes.configuration.watcher; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnCloudPlatform; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.cloud.CloudPlatform; +import org.springframework.cloud.bus.BusProperties; +import org.springframework.cloud.kubernetes.client.discovery.reactive.KubernetesInformerReactiveDiscoveryClient; +import org.springframework.context.ApplicationEventPublisher; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.web.reactive.function.client.WebClient; + +import static org.springframework.cloud.kubernetes.configuration.watcher.ConfigurationWatcherConfigurationProperties.AMQP; +import static org.springframework.cloud.kubernetes.configuration.watcher.ConfigurationWatcherConfigurationProperties.KAFKA; + +/** + * @author wind57 + */ +@Configuration(proxyBeanMethods = false) +@ConditionalOnCloudPlatform(CloudPlatform.KUBERNETES) +class RefreshTriggerAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + @Profile({ AMQP, KAFKA }) + BusRefreshTrigger busRefreshTrigger(ApplicationEventPublisher applicationEventPublisher, + BusProperties busProperties) { + return new BusRefreshTrigger(applicationEventPublisher, busProperties.getId()); + } + + @Bean + @ConditionalOnMissingBean + HttpRefreshTrigger httpRefreshTrigger(KubernetesInformerReactiveDiscoveryClient client, + ConfigurationWatcherConfigurationProperties properties, WebClient webClient) { + return new HttpRefreshTrigger(client, properties, webClient); + } + +} diff --git a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 01fb25bc1e..754b9a11f8 100644 --- a/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configuration-watcher/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,2 +1,5 @@ org.springframework.cloud.kubernetes.configuration.watcher.ConfigurationWatcherAutoConfiguration org.springframework.cloud.kubernetes.configuration.watcher.ConfigUpdateStrategyAutoConfiguration +org.springframework.cloud.kubernetes.configuration.watcher.BusKafkaAutoConfiguration +org.springframework.cloud.kubernetes.configuration.watcher.BusRabbitAutoConfiguration +org.springframework.cloud.kubernetes.configuration.watcher.RefreshTriggerAutoConfiguration