SpringCloud Config 简介
SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。
SpringCloud Config分为服务端和客户端两个部分。
服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密/解密信息等访问接口。
客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息,配置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理,并且可以通过git客户端工具来方便的管理和访问配置内容。
SpringCloud Config 统一配置中心
一、创建一个Eureka注册中心: config-eureka项目
1. 导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2. 启动类添加注解
@SpringBootApplication
@EnableEurekaServer
public class ConfigEurekaApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigEurekaApplication.class, args);
}
}
3. yml配置文件配置
server:
port: 8761
eureka:
instance:
hostname: 127.0.0.1
client:
service-Url:
defaultZone: http://127.0.0.1:8761/eureka/
register-with-eureka: false
fetch-registry: false
server:
enable-self-preservation: false
这样一个注册中心就搭建完成了!!!
二、创建一个config统一配置文件中心: config-server项目
1. 导入依赖
<!-- config server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!-- eureka client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2. 启动类上添加注解
@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
3. yml配置文件配置
server:
port: 8000
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://github.com/dhs-13853761725/springcloud-config/ #存放配置文件的仓库
#username: #如果仓库是公共的不需要输入用户名和密码,否则必须要输入
#password: #密码(可以使用本机公钥)
eureka:
instance:
hostname: 127.0.0.1
client:
service-url:
defaultZone: http://127.0.0.1:8761/eureka/
到此就创建完了!!!
三、创建一个Eureka、Client客户端(注册服务、调用服务)
1. 导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- config client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!-- eureka client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2. 配置文件配置 (原本的配置文件,但这里我们不这么用)
spring:
application:
name: config-client
datasource:
username: root
password: 1
url: jdbc:mysql://127.0.0.1:3306/dhs
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
dbcp2:
initial-size: 5
min-idle: 5
max-idle: 5
eureka:
instance:
hostname: 127.0.0.1
client:
service-url:
defaultZone: http://127.0.0.1:8761/eureka/
3. 使用config统一配置中心后的配置文件
注意:将项目中的application.yml更改为bootstrap.yml,bootstrap的权限最高首先加载
spring:
application:
name: config-client
cloud:
config:
discovery:
enabled: true
service-id: config-server
label: master
profile: dev #多环境,dev表示是开发环境
server:
port: 2001
# 我们将其它配置信息放到远程的git上,此处以github为示例
然后在git上编写了两个配置文件如下:
- config-client-dev.yml配置文件内容如下:
- config-client-test.yml配置文件内容如下:
4. 创建一个controller层,查看config-client客户端是否拿到配置信息
@RestController
public class EnvController {
//SpringBoot获取自定义配置信息
@Value("${env}")
private String env;
@GetMapping("getEnv")
public String getEnv(){
return env;
}
}
启动三个项目,然后先访问config-server,查看是否拿到了配置文件
访问:http://localhost:8000/config-client-dev.yml
8000是config-server的端口号,config-client-dev.yml是git上的配置文件名
可以转换成另外两种格式:
这就说明可以远程获取git配置了!!!
然后再访问:http://localhost:2001/getEnv
恭喜,你可以远程获取git上的配置信息了。。。
将配置文件中的profile更改为 profile: test
多环境生效!!!
到此config统一配置就配置完成了。。。