配置中心服务连接git仓库搭建流程:
1、首先是用git或者svn,数据都可以,作为配置文件的保存地方。这里使用git。
2、在git仓库中创建一个配置文件。
内容,例如如下:
仓库中的配置文件:application.xml
spring:
profiles:
actives:
-dev
---
spring:
profiles: dev #开发环境
application:
name: com-syzw-dev
---
spring:
profiles: test #测试环境
application:
name: com-syzw-test
#该文件必须另存为utf-8否则会出问题
3、创建配置中心的项目模块,在pom文件中引入:spring-cloud-starter-config,eureka client的依赖。
application.yml文件内容如下:
server:
port: 3030
spring:
application:
name: config-center
#指定存储配置文件的配置,这里使用的是git做了存储介质
cloud:
config:
server:
git:
#保存配置文件远程仓库的地址
uri: https://github.com/hylyLLL/config.git
# 如果Git仓库为公开仓库,可以不填写用户名和密码,如果是私有仓库需要填写
#连接的用户名
# username:
# #密码
# password:
eureka:
client:
#将当前配置中心注册进eureka中
fetch-registry: true
#指定要注册进去的eureka server的地址
serviceUrl:
defaultZone: http://eureka-8082.com:8082/eureka,http://eureka-8083.com:8083/eureka
instance:
#显示ip地址
prefer-ip-address: true
#指定ip地址
ip-address: localhost
4、在主启动类上添加@EnableConfigServer,@EnableEurekaClient。
5、在地址栏输入:http://配置中心的地址:端口号/application-profiles的名称.xml,就可以访问到applciation.xml节点上的内容了。
例如:
http://localhost:3030/application-test.xml
就可以得到
spring:
profiles: test #测试环境
application:
name: com-syzw-test
以上就是配置中心服务端连接git仓库的步骤。
客户端也就是消费者通过注册中心服务端读取git仓库中的配置:
1、在git仓库上添加配置文件。
例如:
application2.xml
#开发环境
server:
port: 8201
spring:
#指定是哪一个配置
profiles: dev
application:
name: com-syzw-config-client-dev
eureka:
client:
server-url:
defualtZone: http://eureka-8082.com:8082/eureka,http://eureka-8083.com:8083/eureka
#这种配置方式,就相当于在一个配置文件中配置几种配置。如果要读取该配置文件中的配置,
#配置中心启动后可以直接使用localhost:端口号/application-test.xml,这个test其实就是spring:profiles的值。
#这个三个横线是分割每个配置节点的标识,标识一个配置节点结束了
---
#开发环境
server:
port: 8202
spring:
#指定是哪一个配置
profiles: test
application:
name: com-syzw-config-client-test
eureka:
client:
server-url:
defualtZone: http://eureka-8082.com:8082/eureka,http://eureka-8083.com:8083/eureka
2、然后在要从注册中心获取配置内容的项目上,创建一个bootstrap.yml文件:
内容如下:
spring:
cloud:
config:
name: application2 #需要从github仓库上读取的配置文件名称,除去后缀名yml
profile: test #指定具体要使用的配置项
label: master #从哪个分支上获取
#uri这个名字千万不要写成url,否则会出错,会一直连接默认的config server端口8888
uri: http://localhost:3030 #配置中心上找,因为配置中心上配置好了拉取github中资源的配置。
bootstrap.yml配置文件的作用就像是类加载器BootstrapClassloader一样的地位,是系统级别的,用于加载配置文件。
如果想要看到效果的话,可以创建一个Controller类,然后去读取配置文件中的内容:
例如:
package com.syzw.com_syzw_config_client.rest;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 这个类主要是为了通过使用rest的方式,去浏览器输入地址来查看,配置文件中的内容是否已经更新。
*/
@RestController
public class ConfigClientRest {
@Value("${spring.application.name}")
private String applicationName;
@Value("${server.port}")
private String port;
@GetMapping("/config")
public String getConfig(){
return "服务名:"+this.applicationName+"端口号:"+this.port;
}
}
有可能会遇到@EnableConfigServer注解无法使用:
只需要在
properties版本号哪里加上一下内容就可以使用@EnableConfigServer注解了。
<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
例如:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.ztkj</groupId>
<artifactId>config1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>config1</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR2</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--配置中心所要使用的依赖-->
<!-- springCloudConfig 配置中心 -->
<!--dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
-->
<!-- springCloudConfig 配置中心 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!--将配置中心搭建进eureka中-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
注意:
实际开发中,config client其实就是eureka,服务提供者等模块。