Skip to content

Commit 62520f4

Browse files
committed
add cloud config sample
1 parent 8dcdf5e commit 62520f4

File tree

8 files changed

+111
-0
lines changed

8 files changed

+111
-0
lines changed

samples/cloud-config/build.gradle

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
plugins {
2+
id 'java'
3+
id 'org.springframework.boot' version '3.4.0'
4+
id 'io.spring.dependency-management' version '1.1.2'
5+
}
6+
7+
group = 'com.example'
8+
9+
java {
10+
sourceCompatibility = '17'
11+
}
12+
13+
repositories {
14+
mavenCentral()
15+
}
16+
17+
dependencies {
18+
implementation 'org.springframework.boot:spring-boot-starter-web'
19+
testImplementation project(':spring-boot-testjars')
20+
testImplementation project(':spring-boot-testjars-maven')
21+
testImplementation 'org.springframework.boot:spring-boot-starter-test'
22+
}
23+
24+
tasks.named('test') {
25+
useJUnitPlatform()
26+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package example.cloud.config;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
@SpringBootApplication
7+
public class CloudConfigMain {
8+
public static void main(String[] args) {
9+
SpringApplication.run(CloudConfigMain.class, args);
10+
}
11+
}

samples/cloud-config/src/main/resources/application.yml

Whitespace-only changes.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
some:
2+
value: Hello!
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package example.cloud.config;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.springframework.beans.factory.annotation.Value;
5+
import org.springframework.boot.test.context.SpringBootTest;
6+
import org.springframework.http.HttpStatus;
7+
import org.springframework.http.ResponseEntity;
8+
import org.springframework.web.client.RestClient;
9+
10+
import static org.assertj.core.api.Assertions.assertThat;
11+
import static org.junit.jupiter.api.Assertions.assertTrue;
12+
13+
@SpringBootTest(classes = TestCloudConfigMain.class)
14+
public class CloudConfigMainTest {
15+
@Test
16+
void configServerPropertyTest(@Value("${spring.cloud.config.uri}") String configUri) {
17+
String url = configUri + "/application/default";
18+
RestClient restClient = RestClient.create();
19+
ResponseEntity<String> result = restClient.get()
20+
.uri(url)
21+
.retrieve()
22+
.toEntity(String.class);
23+
assertThat(result.getStatusCode()).isEqualTo(HttpStatus.OK);
24+
assertTrue(result.getBody().contains("Hello!"));
25+
}
26+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package example.cloud.config;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.test.context.TestConfiguration;
5+
import org.springframework.context.annotation.Bean;
6+
import org.springframework.experimental.boot.server.exec.CommonsExecWebServerFactoryBean;
7+
import org.springframework.experimental.boot.server.exec.MavenClasspathEntry;
8+
import org.springframework.experimental.boot.server.exec.ResourceClasspathEntry;
9+
import org.springframework.experimental.boot.test.context.CloudConfigUri;
10+
11+
@TestConfiguration(proxyBeanMethods = false)
12+
public class TestCloudConfigMain {
13+
@Bean
14+
@CloudConfigUri
15+
static CommonsExecWebServerFactoryBean configServer() {
16+
// @formatter:off
17+
return CommonsExecWebServerFactoryBean.builder()
18+
.useGenericSpringBootMain()
19+
.setAdditionalBeanClassNames("org.springframework.cloud.config.server.config.ConfigServerConfiguration")
20+
.systemProperties(props -> {
21+
props.put("spring.config.location", "classpath:/application.yml");
22+
})
23+
.classpath((classpath) -> classpath
24+
.entries(new MavenClasspathEntry("org.springframework.cloud:spring-cloud-config-server:4.2.1"))
25+
.entries(new ResourceClasspathEntry("config-native/application.yml", "config-native/application.yml"))
26+
.entries(new ResourceClasspathEntry("testjars/configServer/application.yml", "application.yml"))
27+
);
28+
// @formatter:on
29+
}
30+
31+
public static void main(String[] args) throws Exception {
32+
SpringApplication.from(CloudConfigMain::main)
33+
.with(TestCloudConfigMain.class)
34+
.run(args);
35+
}
36+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
spring:
2+
profiles:
3+
active: native
4+
cloud:
5+
config:
6+
server:
7+
native:
8+
search-locations: classpath:/config-native

settings.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,5 @@ include ':spring-boot-testjars'
1414
include ':spring-boot-testjars-maven'
1515
include ':samples:oauth2-login'
1616
include ':samples:oauth2-login-custom-config'
17+
include 'samples:cloud-config'
18+

0 commit comments

Comments
 (0)