开发者学堂课程【微服务框架 Spring Cloud 快速入门:SpringCloud Config客户端配置与测试】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/614/detail/9372
SpringCloud Config 客户端配置与测试
自己带一个 application.yml,现在是看A,B和C去通过334来读到GitHub的信息。 1. 在本地
D:\44xmySpringCloud\microservicecloud-config路径下新建文件microservicecloud-config-client.yml
在电脑中找到相应的目录下新建一个新的文件夹同时将其命名为microservicecloud-config-client.yml。
同时右键点击打开记事本。
2. microservicecloud-config-client.yml内容
其中的 port:xxx 是端口号,dev 和 test 指的是配置文件。当我们的配置为 dev 时,端口号是8201并输出对应的 dev 的信息。而配置为 test,端口号为8202并对应输出test的信息。同时 eurka 在其中只是一个配置文件。
spring:
active:
- dev
---
server:
port: 8201
spring:
profiles: dev
application:
name: microservicecloud-config-client
eureka:
client:
service-url:
defaultZone: http: / /eureka-dev.com: 7001/eureka/
---
server:
port: 8202
spring:
profiles: test
application:name: microservicecloud-config-client
eureka:
client:
service-url:
defaultZone: http: //eureka-test.com:7001/eureka/
将其以上的代码输入记事本当中,以UT-8的形式保存到记事本中.
3. 将上一步提交到GitHub中
点击config-client.yml文件
分别输入 git status
git add.
git commit -m”test config”
git push origin master
四条指令,如果成功执行的话我们就可以看见git下面会显示两个配置文件。
3.新建 microservicecloud-config-client-3355
就相当于我们尝试一下 ClientA 是否能通过 3344(Config Server)获取到Git上远程地址链接,拿到外置的统一配置分化管理。
首先点右键中新建的 other,选择Maven Module命名为microservicecloud-config-client-3355。
4. POM
同时按照惯例,将POM里的修改内容和全部内容依次创建然后粘贴内容。
修改内容
第四行的config后就没有再接server说明他是server端。
<! -- SpringCloud Config
客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config<yartifactId>
</dependency>
全部内容
<project xmins= "http://maven.apache.org/POMN/4.0.0”xmins:xsi="http: //ww.w3.org/2001/XNLSchema-instance"xsi:schemaLocation="http://maven.apache.org/PON/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>l
<parent>
<groupid>com.atguigu.springcloud</groupId>
<artifactId>microservicecloud</ artifactId>
version>e.e.1-SNAPSHOT</version>
</parent>
<artifactid>microservicecloud-config-client-3355</artifactid>
<dependencies>
<l--SpringCloud Config
客户端-->
<dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</ artifactId>
</ dependency>
<dependency>
5. bootstrap.yml
我们在讲 DVM 的时候曾经讲过 class.类装载器,bootstrap 是系统级的封装显示最高权限的。
言下之意 bootstrap.yml 说明她也是一个配置文件。我们首先创建一个文件命名为 bootstrap.yml。
5.1applicaiton.ym 是什么
applicaiton.yml是用户级的资源配置项
bootstrap.ym1是系统级的,优先级更加高
Spring Cloud会创建一个'Bootstrap Context',作为 Spring 应用的` Application Context 的父上下文。初始化的时候,`Bootstrap Context'负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的Environment'。
'Bootstrap`属性有高优先级,默认情况下,它们不会被本地配置覆盖。‘Bootstrap context和Application Context有着不同的约定。
所以新增了一个'bootstrap.yml'文件,保证`Bootstrap Context和`Application Context`配置的分离。
在此处只要保证3355能够连上3344,就可以直接通过3344就可以得到本次要访问的文件。因为3344就是连着这个Git库所以就可以直接得到本次要访问的文件信息。
由代码可以知道为dev配置,所以一切顺利的话就会输出端口号为8201,名字为 microservicecloud-config-client。
spring:
cloud:
config:
name: microservicecloud-config-client
#需要从github上:读取的资源名称,注意没有yml后缀名
profile: dev#
本次访问的配置项
label: master
uri: http://config-3344.com:3344
#木微服缝启动后先去找3344号服务,通过 SpringCloudConfig 获取 GitHub 的服务地址
6. application.yml
依旧把 appplication.yml 再 cloud 里面要必须要保证,所以此时3344为大管家,3355为客户,3355通过3344来获取远端的GitHub。
此时我们需要 appplication.yml 然后然后它获取对应的信息。同时bootstrap.yml为系统级的配置文件,比用户级的大一级,所以只用留一个名字就行。同时要注意名字一定要一致。
spring:
application:
name: microservicecloud-config-client
7. windows 下修改 hosts 文件,增加映射——127.0.0.1 client-config.com
同时再做一次 host 增加文件的映射.(不再演示)
127.0.0.1
conlig-3344.com
127.o.o.1
client-config.cord
8. 新建rest类,验证是否能从GitHub上读取配置
无论如果此时我们的默认配置是Dev,判断能否从
GitHub里面获取配置信息。
package com.atguigu.springcloud.rest;
import org.springframework.beans.factory.annotation.Value;
Import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Restcontroller
public class ConfigclientRest {
//其中获得了三个变量,是从配置文件中获取信息
@value("${spring.application.name} ")
private string applicationName;
@Value("${eureka.client.service-url.defaultZone}")
private string eurekaServers;
@Value("${server.port}")
Private String port;
@RequestMapping(" /config")
public string getConfig( )
{
String str = "applicationName: "+applicationName+"\t eurekaServers :" eurekaServers+"\t port:" port;
System.out.println(""
*家赛家市*str: "+str);
return "applicationName: "+applicationName+"\)t eurekaServers: " +eurekaServers+"\[t port: "+port;
}
}
新建一个名为com.atguigu.springcloud.rest包,同时在包下新建一个ConfigClientRest的类。将代码粘贴放入。
9. 主启动类ConfigClient_3355_StartSpringCloudApp
package com.atguigu.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Configclient,3355_startSpringcloudApp
{
public static void main(String[ ] args)
{
SpringApplication.run(ConfigClient_3355_StartSpringCloudApp.class,arg);
}
}
在 com.atguigu.springcloud.rest 包里面新建一个类名为ConfigClient_3355_StartSpringCloudApp 的类,将代码中的rest删除然后右键打开文件夹,将其移至atguigu下面,同时再刷新一下。
最后别忘了刷新 microservicecloud-config-client-3355 工程,成功之后就会显示如图。最后把主启动类的代码放进去。
10. 测试
我们先把3344和3355都启动,看看3355是否能通过3344来获取信息,下载到本地。
启动Config配置中心3344微服务并自测
http://config-3344.com:3344/application-dev.yml
启动3355作为 Client 准备访问
bootstrap.yml 里面的 profile 值是什么,决定从 github 上读取什么
假如目前是profile: dev
l dev 默认在github.上对应的端口就是8201
l http://client-config.com:8201/config
假如目前是 profile: test
l test 默认在 github.上对应的端口就是8202
//就相当于于是做了我们的域名映射
l http://client-config.com:8202/config
DEV时:
根据之前我们知道本地配置是dev,可以看到dev一切顺利的话端口号是8201,言下之意就是说我们的rest此时的端口号值就是8201.
可以通过运行的结果看出,现在我们取的 config-client,在 dev 配置的时候,输出的端口号是8201。
2. TEST时:
如果要查看test的结果是就应该将 boostrap.yml 中的 dev 改成test,此时就是以同一配置文件变相的进行了切换。我们就可以看到端口号变成了8202.
成功实现了客户端3355访问 SpringCloud Config3344 通过GitHub 获取配置信息