Skip to content

Commit 73bef7c

Browse files
author
YunaiV
committed
增加 spring cloud config 配置中心的示例
1 parent 86d2ff4 commit 73bef7c

File tree

9 files changed

+313
-0
lines changed

9 files changed

+313
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>labx-12</artifactId>
7+
<groupId>cn.iocoder.springboot.labs</groupId>
8+
<version>1.0-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<artifactId>labx-12-sc-config-server-git-nacos</artifactId>
13+
14+
<properties>
15+
<maven.compiler.target>1.8</maven.compiler.target>
16+
<maven.compiler.source>1.8</maven.compiler.source>
17+
<spring.boot.version>2.2.4.RELEASE</spring.boot.version>
18+
<spring.cloud.version>Hoxton.SR1</spring.cloud.version>
19+
<spring.cloud.alibaba.version>2.2.0.RELEASE</spring.cloud.alibaba.version>
20+
</properties>
21+
22+
<!--
23+
引入 Spring Boot、Spring Cloud、Spring Cloud Alibaba 三者 BOM 文件,进行依赖版本的管理,防止不兼容。
24+
在 https://dwz.cn/mcLIfNKt 文章中,Spring Cloud Alibaba 开发团队推荐了三者的依赖关系
25+
-->
26+
<dependencyManagement>
27+
<dependencies>
28+
<dependency>
29+
<groupId>org.springframework.boot</groupId>
30+
<artifactId>spring-boot-starter-parent</artifactId>
31+
<version>${spring.boot.version}</version>
32+
<type>pom</type>
33+
<scope>import</scope>
34+
</dependency>
35+
<dependency>
36+
<groupId>org.springframework.cloud</groupId>
37+
<artifactId>spring-cloud-dependencies</artifactId>
38+
<version>${spring.cloud.version}</version>
39+
<type>pom</type>
40+
<scope>import</scope>
41+
</dependency>
42+
<dependency>
43+
<groupId>com.alibaba.cloud</groupId>
44+
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
45+
<version>${spring.cloud.alibaba.version}</version>
46+
<type>pom</type>
47+
<scope>import</scope>
48+
</dependency>
49+
</dependencies>
50+
</dependencyManagement>
51+
52+
<dependencies>
53+
<!-- 引入 Spring Cloud Config Server 相关依赖,实现配置中心的服务端,并实现对其的自动配置 -->
54+
<dependency>
55+
<groupId>org.springframework.cloud</groupId>
56+
<artifactId>spring-cloud-config-server</artifactId>
57+
</dependency>
58+
59+
<!-- 引入 Spring Cloud Alibaba Nacos Discovery 相关依赖,将 Nacos 作为注册中心,并实现对其的自动配置 -->
60+
<dependency>
61+
<groupId>com.alibaba.cloud</groupId>
62+
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
63+
</dependency>
64+
</dependencies>
65+
66+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package cn.iocoder.springcloud.labx12.configserverdemo;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
import org.springframework.cloud.config.server.EnableConfigServer;
6+
7+
@SpringBootApplication
8+
@EnableConfigServer
9+
public class ConfigServerApplication {
10+
11+
public static void main(String[] args) {
12+
SpringApplication.run(ConfigServerApplication.class, args);
13+
}
14+
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
server:
2+
port: 8888
3+
4+
spring:
5+
application:
6+
name: demo-config-server
7+
8+
profiles:
9+
active: git # 使用的 Spring Cloud Config Server 的存储器方案
10+
11+
# Spring Cloud Config 相关配置项
12+
cloud:
13+
config:
14+
server:
15+
# Spring Cloud Config Server 的 Git 存储器的配置项,对应 MultipleJGitEnvironmentProperties 类
16+
git:
17+
uri: https://github.com/YunaiV/demo-config-server.git # Git 仓库地址
18+
search-paths: / # 读取文件的根地址
19+
default-label: master # 使用的默认分支,默认为 master
20+
# username: ${CODING_USERNAME} # 账号
21+
# password: ${CODING_PASSWORD} # 密码
22+
23+
# Spring Cloud Nacos Discovery 相关配置项
24+
nacos:
25+
# Nacos 作为注册中心的配置项,对应 NacosDiscoveryProperties 配置类
26+
discovery:
27+
server-addr: 127.0.0.1:8848 # Nacos 服务器地址
28+
service: ${spring.application.name} # 注册到 Nacos 的服务名。默认值为 ${spring.application.name}。
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>labx-12</artifactId>
7+
<groupId>cn.iocoder.springboot.labs</groupId>
8+
<version>1.0-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<artifactId>labx-12-sc-config-user-application-nacos</artifactId>
13+
14+
<properties>
15+
<maven.compiler.target>1.8</maven.compiler.target>
16+
<maven.compiler.source>1.8</maven.compiler.source>
17+
<spring.boot.version>2.2.4.RELEASE</spring.boot.version>
18+
<spring.cloud.version>Hoxton.SR1</spring.cloud.version>
19+
<spring.cloud.alibaba.version>2.2.0.RELEASE</spring.cloud.alibaba.version>
20+
</properties>
21+
22+
<!--
23+
引入 Spring Boot、Spring Cloud、Spring Cloud Alibaba 三者 BOM 文件,进行依赖版本的管理,防止不兼容。
24+
在 https://dwz.cn/mcLIfNKt 文章中,Spring Cloud Alibaba 开发团队推荐了三者的依赖关系
25+
-->
26+
<dependencyManagement>
27+
<dependencies>
28+
<dependency>
29+
<groupId>org.springframework.boot</groupId>
30+
<artifactId>spring-boot-starter-parent</artifactId>
31+
<version>${spring.boot.version}</version>
32+
<type>pom</type>
33+
<scope>import</scope>
34+
</dependency>
35+
<dependency>
36+
<groupId>org.springframework.cloud</groupId>
37+
<artifactId>spring-cloud-dependencies</artifactId>
38+
<version>${spring.cloud.version}</version>
39+
<type>pom</type>
40+
<scope>import</scope>
41+
</dependency>
42+
<dependency>
43+
<groupId>com.alibaba.cloud</groupId>
44+
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
45+
<version>${spring.cloud.alibaba.version}</version>
46+
<type>pom</type>
47+
<scope>import</scope>
48+
</dependency>
49+
</dependencies>
50+
</dependencyManagement>
51+
52+
<dependencies>
53+
<!-- 引入 SpringMVC 相关依赖,并实现对其的自动配置 -->
54+
<dependency>
55+
<groupId>org.springframework.boot</groupId>
56+
<artifactId>spring-boot-starter-web</artifactId>
57+
</dependency>
58+
59+
<!-- 引入 Spring Cloud Config Client 相关依赖,作为配置中心的客户端,并实现自动化配置 -->
60+
<dependency>
61+
<groupId>org.springframework.cloud</groupId>
62+
<artifactId>spring-cloud-starter-config</artifactId>
63+
</dependency>
64+
65+
<!-- 引入 Spring Cloud Alibaba Nacos Discovery 相关依赖,将 Nacos 作为注册中心,并实现对其的自动配置 -->
66+
<dependency>
67+
<groupId>com.alibaba.cloud</groupId>
68+
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
69+
</dependency>
70+
</dependencies>
71+
72+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package cn.iocoder.springcloud.labx12.userapplication;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
@SpringBootApplication
7+
public class UserApplication {
8+
9+
public static void main(String[] args) {
10+
SpringApplication.run(UserApplication.class, args);
11+
}
12+
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package cn.iocoder.springcloud.labx12.userapplication.config;
2+
3+
import org.springframework.boot.context.properties.ConfigurationProperties;
4+
import org.springframework.stereotype.Component;
5+
6+
@Component
7+
@ConfigurationProperties(prefix = "order")
8+
public class OrderProperties {
9+
10+
/**
11+
* 订单支付超时时长,单位:秒。
12+
*/
13+
private Integer payTimeoutSeconds;
14+
15+
/**
16+
* 订单创建频率,单位:秒
17+
*/
18+
private Integer createFrequencySeconds;
19+
20+
public Integer getPayTimeoutSeconds() {
21+
return payTimeoutSeconds;
22+
}
23+
24+
public OrderProperties setPayTimeoutSeconds(Integer payTimeoutSeconds) {
25+
this.payTimeoutSeconds = payTimeoutSeconds;
26+
return this;
27+
}
28+
29+
public Integer getCreateFrequencySeconds() {
30+
return createFrequencySeconds;
31+
}
32+
33+
public OrderProperties setCreateFrequencySeconds(Integer createFrequencySeconds) {
34+
this.createFrequencySeconds = createFrequencySeconds;
35+
return this;
36+
}
37+
38+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package cn.iocoder.springcloud.labx12.userapplication.controller;
2+
3+
import cn.iocoder.springcloud.labx12.userapplication.config.OrderProperties;
4+
import org.springframework.beans.factory.annotation.Autowired;
5+
import org.springframework.beans.factory.annotation.Value;
6+
import org.springframework.web.bind.annotation.GetMapping;
7+
import org.springframework.web.bind.annotation.RequestMapping;
8+
import org.springframework.web.bind.annotation.RestController;
9+
10+
import java.util.HashMap;
11+
import java.util.Map;
12+
13+
@RestController
14+
@RequestMapping("/demo")
15+
public class DemoController {
16+
17+
@Autowired
18+
private OrderProperties orderProperties;
19+
20+
/**
21+
* 测试 @ConfigurationProperties 注解的配置属性类
22+
*/
23+
@GetMapping("/test01")
24+
public OrderProperties test01() {
25+
return orderProperties;
26+
}
27+
28+
@Value(value = "${order.pay-timeout-seconds}")
29+
private Integer payTimeoutSeconds;
30+
@Value(value = "${order.create-frequency-seconds}")
31+
private Integer createFrequencySeconds;
32+
33+
/**
34+
* 测试 @Value 注解的属性
35+
*/
36+
@GetMapping("/test02")
37+
public Map<String, Object> test02() {
38+
Map<String, Object> result = new HashMap<>();
39+
result.put("payTimeoutSeconds", payTimeoutSeconds);
40+
result.put("createFrequencySeconds", createFrequencySeconds);
41+
return result;
42+
}
43+
44+
@Value(value = "${xx-password:''}")
45+
private String xxPassword;
46+
47+
@GetMapping("/xx_password")
48+
public String xxPassword() {
49+
return xxPassword;
50+
}
51+
52+
@Value(value = "${yy-password:''}")
53+
private String yyPassword;
54+
55+
@GetMapping("/yy_password")
56+
public String yyPassword() {
57+
return yyPassword;
58+
}
59+
60+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
spring:
2+
application:
3+
name: user-application
4+
5+
cloud:
6+
# Spring Cloud Config Client 配置项,对应 ConfigClientProperties 类
7+
config:
8+
name: ${spring.application.name} # 读取的配置文件的名字,默认为 ${spring.application.name}
9+
discovery:
10+
enabled: true
11+
service-id: demo-config-server
12+
13+
# Spring Cloud Nacos Discovery 相关配置项
14+
nacos:
15+
# Nacos 作为注册中心的配置项,对应 NacosDiscoveryProperties 配置类
16+
discovery:
17+
server-addr: 127.0.0.1:8848 # Nacos 服务器地址
18+
service: ${spring.application.name} # 注册到 Nacos 的服务名。默认值为 ${spring.application.name}。

labx-12/pom.xml

+3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424

2525
<module>labx-12-sc-config-server-git-auto-refresh-by-bus</module>
2626
<module>labx-12-sc-config-user-application-auto-refresh-by-bus</module>
27+
28+
<module>labx-12-sc-config-server-git-nacos</module>
29+
<module>labx-12-sc-config-user-application-nacos</module>
2730
</modules>
2831

2932
</project>

0 commit comments

Comments
 (0)