Skip to content

Commit 690b3be

Browse files
AWS Spring cloud map support
Support for integrating with AWS Cloudmap
1 parent 8db741e commit 690b3be

File tree

27 files changed

+1844
-1
lines changed

27 files changed

+1844
-1
lines changed

spring-cloud-aws-autoconfigure/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@
6666
<version>3.0.0-SNAPSHOT</version>
6767
<optional>true</optional>
6868
</dependency>
69+
<dependency>
70+
<groupId>io.awspring.cloud</groupId>
71+
<artifactId>spring-cloud-aws-cloudmap</artifactId>
72+
<version>3.0.0-SNAPSHOT</version>
73+
<optional>true</optional>
74+
</dependency>
6975
<dependency>
7076
<groupId>io.awspring.cloud</groupId>
7177
<artifactId>spring-cloud-aws-dynamodb</artifactId>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
/*
2+
* Copyright 2013-2021 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package io.awspring.cloud.autoconfigure.cloudmap;
17+
18+
import io.awspring.cloud.autoconfigure.cloudmap.discovery.CloudMapDiscoveryClient;
19+
import io.awspring.cloud.autoconfigure.cloudmap.properties.CloudMapProperties;
20+
import io.awspring.cloud.autoconfigure.cloudmap.properties.registration.ServiceRegistration;
21+
import io.awspring.cloud.autoconfigure.cloudmap.registration.CloudMapAutoRegistration;
22+
import io.awspring.cloud.autoconfigure.core.AwsClientBuilderConfigurer;
23+
import io.awspring.cloud.autoconfigure.core.AwsClientCustomizer;
24+
import org.slf4j.Logger;
25+
import org.slf4j.LoggerFactory;
26+
import org.springframework.beans.factory.ObjectProvider;
27+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
28+
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
29+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
30+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
31+
import org.springframework.context.ApplicationContext;
32+
import org.springframework.context.annotation.Bean;
33+
import org.springframework.context.annotation.Configuration;
34+
import software.amazon.awssdk.services.servicediscovery.ServiceDiscoveryClient;
35+
import software.amazon.awssdk.services.servicediscovery.ServiceDiscoveryClientBuilder;
36+
37+
/**
38+
* Cloudmap BootstrapConfiguration configuration class to create the required beans.
39+
*
40+
* @author Hari Ohm Prasath
41+
* @since 3.0
42+
*/
43+
@Configuration(proxyBeanMethods = false)
44+
@EnableConfigurationProperties(CloudMapProperties.class)
45+
@ConditionalOnClass({ ServiceDiscoveryClient.class, ServiceRegistration.class, CloudMapAutoRegistration.class })
46+
@ConditionalOnProperty(prefix = CloudMapProperties.CONFIG_PREFIX, name = "enabled", matchIfMissing = true)
47+
public class CloudMapBootstrapConfiguration {
48+
49+
private final ApplicationContext context;
50+
private ServiceDiscoveryClient serviceDiscovery;
51+
private final CloudMapProperties properties;
52+
53+
public CloudMapBootstrapConfiguration(CloudMapProperties properties, ApplicationContext context) {
54+
this.properties = properties;
55+
this.context = context;
56+
}
57+
58+
@ConditionalOnMissingBean
59+
@Bean
60+
public ServiceDiscoveryClient discoveryClient(AwsClientBuilderConfigurer awsClientBuilderConfigurer,
61+
ObjectProvider<AwsClientCustomizer<ServiceDiscoveryClientBuilder>> configurer) {
62+
this.serviceDiscovery = awsClientBuilderConfigurer
63+
.configure(ServiceDiscoveryClient.builder(), this.properties, configurer.getIfAvailable()).build();
64+
return this.serviceDiscovery;
65+
}
66+
67+
@Bean
68+
@ConditionalOnMissingBean
69+
CloudMapAutoRegistration createAutoRegistration() {
70+
return new CloudMapAutoRegistration(context, serviceDiscovery, properties.getRegistry());
71+
}
72+
73+
@Bean
74+
@ConditionalOnMissingBean
75+
public CloudMapDiscoveryClient discoveryClient() {
76+
return new CloudMapDiscoveryClient(serviceDiscovery, properties);
77+
}
78+
79+
@Bean
80+
@ConditionalOnMissingBean
81+
public ServiceRegistration serviceRegistration() {
82+
return new ServiceRegistration(properties.getRegistry());
83+
}
84+
85+
}

0 commit comments

Comments
 (0)