Skip to content

Commit 806376f

Browse files
ObjectProvider for missing bean
Signed-off-by: Arjav <arjavdongaonkar@gmail.com>
1 parent f54b933 commit 806376f

File tree

2 files changed

+16
-13
lines changed

2 files changed

+16
-13
lines changed

spring-cloud-kubernetes-controllers/spring-cloud-kubernetes-configserver/src/main/java/org/springframework/cloud/kubernetes/configserver/KubernetesConfigServerAutoConfiguration.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,11 @@
2121

2222
import io.kubernetes.client.openapi.apis.CoreV1Api;
2323

24+
import org.springframework.beans.factory.ObjectProvider;
2425
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
2526
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
2627
import org.springframework.boot.autoconfigure.condition.ConditionalOnCloudPlatform;
28+
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2729
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
2830
import org.springframework.boot.cloud.CloudPlatform;
2931
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -57,22 +59,19 @@
5759
@EnableConfigurationProperties(KubernetesConfigServerProperties.class)
5860
public class KubernetesConfigServerAutoConfiguration {
5961

60-
@Configuration(proxyBeanMethods = false)
61-
static class KubernetesFactoryConfig {
62-
63-
@Bean
64-
public KubernetesEnvironmentRepositoryFactory kubernetesEnvironmentRepositoryFactory(
65-
KubernetesEnvironmentRepository kubernetesEnvironmentRepository) {
66-
return new KubernetesEnvironmentRepositoryFactory(kubernetesEnvironmentRepository);
67-
}
62+
@Bean
63+
@ConditionalOnMissingBean
64+
public KubernetesEnvironmentRepositoryFactory kubernetesEnvironmentRepositoryFactory(
65+
ObjectProvider<KubernetesEnvironmentRepository> kubernetesEnvironmentRepositoryProvider) {
66+
return new KubernetesEnvironmentRepositoryFactory(kubernetesEnvironmentRepositoryProvider);
6867
}
6968

7069
@Bean
7170
@Profile("kubernetes")
71+
@ConditionalOnMissingBean
7272
public EnvironmentRepository kubernetesEnvironmentRepository(CoreV1Api coreV1Api,
7373
List<KubernetesPropertySourceSupplier> kubernetesPropertySourceSuppliers,
7474
KubernetesNamespaceProvider kubernetesNamespaceProvider) {
75-
System.out.println("Creating KubernetesEnvironmentRepository bean...");
7675
return new KubernetesEnvironmentRepository(coreV1Api, kubernetesPropertySourceSuppliers,
7776
kubernetesNamespaceProvider.getNamespace());
7877
}
Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,24 @@
11
package org.springframework.cloud.kubernetes.configserver;
22

3+
import org.springframework.beans.factory.ObjectProvider;
34
import org.springframework.cloud.config.server.environment.EnvironmentRepositoryFactory;
45
import org.springframework.stereotype.Component;
56

7+
/**
8+
* Factory class for creating instances of {@link KubernetesEnvironmentRepository}.
9+
*/
610
@Component
711
public class KubernetesEnvironmentRepositoryFactory
812
implements EnvironmentRepositoryFactory<KubernetesEnvironmentRepository, KubernetesConfigServerProperties> {
913

10-
private final KubernetesEnvironmentRepository kubernetesEnvironmentRepository;
14+
private final ObjectProvider<KubernetesEnvironmentRepository> kubernetesEnvironmentRepositoryProvider;
1115

12-
public KubernetesEnvironmentRepositoryFactory(KubernetesEnvironmentRepository kubernetesEnvironmentRepository) {
13-
this.kubernetesEnvironmentRepository = kubernetesEnvironmentRepository;
16+
public KubernetesEnvironmentRepositoryFactory(ObjectProvider<KubernetesEnvironmentRepository> kubernetesEnvironmentRepositoryProvider) {
17+
this.kubernetesEnvironmentRepositoryProvider = kubernetesEnvironmentRepositoryProvider;
1418
}
1519

1620
@Override
1721
public KubernetesEnvironmentRepository build(KubernetesConfigServerProperties environmentProperties) {
18-
return kubernetesEnvironmentRepository;
22+
return kubernetesEnvironmentRepositoryProvider.getIfAvailable();
1923
}
2024
}

0 commit comments

Comments
 (0)