首先搞定注册中心
file-new-module
pom.xml
<?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 http://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.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.hand</groupId>
<artifactId>springcloud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springcloud</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.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</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>
将application.properties更名为application.yml
application.yml
---
#端口号
server:
port: 8760
eureka:
instance:
hostname: localhost
client:
# eureka.client.registerWithEureka :表示是否将自己注册到Eureka Server,默认为true。
# 由于当前这个应用就是Eureka Server,故而设为false
register-with-eureka: false
# eureka.client.fetchRegistry :表示是否从Eureka Server获取注册信息,默认为true。因为这是一个单点的Eureka Server,
# 不需要同步其他的Eureka Server节点的数据,故而设为false。
fetch-registry: false
service-url:
# eureka.client.serviceUrl.defaultZone :设置与Eureka Server交互的地址,
#查询服务和注册服务都需要依赖这个地址。默认是
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
启动之后浏览器访问localhost:8760
接着在我们的github上新建
再之后就是
新建
pom.xml
<?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 http://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.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>my-config-server</groupId>
<artifactId>config-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>config-server</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.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</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>
application.properties
# 配置 Spring Cloud Config Server应用名
spring.application.name=config-server
#端口
server.port = 7070
#注册中心地址
eureka.client.service-url.defaultZone=http://localhost:8760/eureka/
#配置config
#git 仓库位置
spring.cloud.config.server.git.uri=https://github.com/zhaomengxia/myconfig
#git 搜索的相对路径
spring.cloud.config.server.git.search-paths=test
#git 仓库用户名以及密码
spring.cloud.config.server.git.username=你的github账号
spring.cloud.config.server.git.password=你的github密码
spring.cloud.config.server.git.uri
:配置Git仓库的位置,直接从浏览器地址栏中复制即可。
如图
spring.cloud.config.server.git.search-paths
:搜索配置文件的相对路径。这里就是上图中的test文件夹spring.cloud.config.server.git.username/password
:Git仓库的帐号密码,这里可配可不配。
启动ConfigServerApplication.java
再访问localhost:8760
我们可以看到,已经注册进来了,我们接着来看一下我们外部化配置是否读取到了。在这里我们有一个规则,这个规则是我看 翟永超大神的《Spring Cloud 微服务实战》中摘录的
/{application}/{profile}/[{label}]
/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
/{label}/{application}-{profile}.yml
这里的label
指的是对应Git上的不同的分支。默认为master。其余的可如图
所以下面浏览器中访问consumer-test.properties文件里的内容的链接是localhost:7070/consumer/test/
到这里我们的配置中心已经搞定了。接下来让我们来搞一下客户端。
客户端配置(ribbon-consumer)
这里的客户端,我就使用之前创建的客户端了。很简单,如何搭建,可以回去看一下
下图中之所以把application.properties
中的内容全部注释掉改用bootstrap.properties,这个是基于springboot的外部化配置加载顺序。
如果使用application.properties则启动会出现如下
反之如果我们采用bootstrap.properties
运行结果如下
先去注册中心查看,结果如下图,说明已经注册成功
接下来让我们测试一下是否可以读取到 配置中心的配置吧。由下面前两张图可以得知第三张图的结果正是我们要的,所以大功告成了
总结
分布式配置中心方便了我们整体项目的运维以及管理,使用好了可以使我们的项目开发部署测试都完美的进行。
注册中心代码
源代码
https://github.com/zhaomengxia/springboot_mybatis.git
在项目中的位置
源代码
https://github.com/zhaomengxia/config-server.git
远程仓库配置