SpringCloud Config

我又在造轮子,哈哈哈哈,其实我也不想呀,哈哈哈哈,等会要去看配置中心服务化和高可用,才写的这个

服务端

在github上面创建一个项目,里面创建一个文件:config-dev.properties,config-test.properties

config-dev.properties

1
port=8003

config-test.properties

1
port=8004

导包:

1
2
3
4
5
6
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>

application.properties

本地=>本地配置

git=>配置文件放在github上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# 注册服务的端口
server.port: 10001

#配置服务名称
spring.application.name: service-config

#本地
spring.profiles.active=native
spring.cloud.config.server.native.search-locations: classpath:/

#git
spring.cloud.config.server.git.uri=https://github.com/YangAnLin/config.git
spring.cloud.config.server.git.searchPaths=/
spring.cloud.config.label=master
spring.cloud.config.server.git.username=136936954@qq.com
spring.cloud.config.server.git.password=lee22259669

启动类

1
2
3
4
5
6
7
8
@SpringBootApplication
@EnableConfigServer
public class ConfigB2bApplication {

public static void main(String[] args) {
SpringApplication.run(ConfigB2bApplication.class, args);
}
}

可以启动,访问看看

仓库中的配置文件会被转换成web接口,访问可以参照以下的规则:

  • /{application}/{profile}[/{label}]
  • /{application}-{profile}.yml
  • /{label}/{application}-{profile}.yml
  • /{application}-{profile}.properties
  • /{label}/{application}-{profile}.properties

以config-dev.properties为例子,它的application是config,profile是dev。client会根据填写的参数来选择读取对应的配置。

比如输入localhost:10001/config/dev 有时候这种可能访问不到,可以直接输入localhost:10001/config-dev.properties

客户端

1
2
3
4
5
6
7
8
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

新建一个bootstrap.properties

1
2
3
4
5
6
7
8
9
10
11
#git
spring.cloud.config.name=config
spring.cloud.config.profile=dev
spring.cloud.config.label=master
spring.cloud.config.uri=http://127.0.0.1:10001/

#本地
spring.cloud.config.name=config
spring.cloud.config.profile=dev
spring.cloud.config.label=office
spring.cloud.config.uri=http://127.0.0.1:10001/

如果是git,spring.cloud.config.label代表的分支

如果是本地,spring.cloud.config.label代表的文件夹目录,服务端那里是classpath:/,客户端是office,能想到项目resource下面有个office文件夹

如果Git里面有个office文件呢,spring.cloud.config.server.git.searchPaths=/office,有多个文件,就用逗号隔开,测试访问http://localhost:10001/config-dev.properties,也一样能访问到

测试

1
2
3
4
5
6
7
8
9
10
@RestController
class HelloController {
@Value("${port}")
private String hello;

@RequestMapping("/port")
public String from() {
return this.hello;
}
}