config统一配置中心
1、创建一个工程模块
在《spring cloud之maven工程的创建(一)》maven工程上增加一个模块叫chaotic-config,项目结构如下:
2、配置pom.xml
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-config-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.10</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-consul-discovery -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
<version>2.2.0.RELEASE</version>
</dependency>
3、配置工程启动入口
@EnableConfigServer //加载服务器上的配置文件
@SpringBootApplication
@EnableDiscoveryClient //consul能动性
public class ConfigApp {
public static void main(String[] args) {
SpringApplication.run(ConfigApp.class, args);
}
}
4、配置bootstrap.yml
spring:
application:
name: chaotic-config
cloud:
consul: #向consul服务中心注册
host: localhost
port: 8500
config:
server:
git:
uri: https://gitee.com/heihei/chaotic.git #gitee上的git仓库名
username: heiheiname
password: heiheipsw
force-pull: true #设置强行pull拉取
default-label: master #配置文件分支
search-paths: chaotic-config/src/main/resources/config #配置文件所在根目录
5、配置application.yml
server:
port: 8501
6、添加server-dev.yml和server-prod.yml
目前内容都是如下(看真正开发的时候决定怎么配置)
server:
port: 8503
spring:
application:
name: chaotic-server
cloud:
consul:
host: localhost
port: 8500
#注册到consul的服务名称
discovery:
serviceName: chaotic-server
注意的是server-dev.yml和server.yml里面的内容一定要规范yml语法,否则解析错误如下:
在这里插入代码片Caused by: org.yaml.snakeyaml.constructor.DuplicateKeyException: while constructing a mapping
in 'reader', line 1, column 1:
spring:
^
found duplicate key spring
in 'reader', line 6, column 1:
spring:
^
7、启动postman测试和查看consul服务的变化
获取server.yml文件信息:
获取server-dev.yml信息:
8、总结
- 项目如果跑步起来,一定要注意cloud和boot的版本要一致。
- config加载git的文件默认是仓库的根目录,如果不放到根目录,一定要注意指定“search-paths: 文件名”。
- 遇到访问不了的问题,一定要确保git用户名和密码正确。
- 一定要确保yml的规范,否则解析会有问题。
- 加载文件是有有依可寻的,比如server-dev.yml,对应的加载路径是server/dev;完整为:http://localhost:8501/server/dev。最后一个杠杠之前的就是文件名,最后一个杠杠后面的就是对应的版本。