1、简单了解
这是服务端
因为是需要通过网络访问git中的来访问得到properties/yaml
所有必然是需要有控制器来实现处理的。由于是SpringCloud项目,一般会自动打印系统注册端点,即使没有使用actuator。
所以第一步先从控制台简单看下注册了哪些端点
可以看到注册的端点与微服务实战中列出的一样,甚至还要多点,还支持json,通配符等等
具体maven包
org.springframework.cloud.config.server.environment
org.springframework.cloud.config.server.resource
2、查看源码中的两个Controller
可见一个个匹配规则对应一个个Controller映射方法,ResourceController与EnvironmentController在不同子包下,简单猜测一下:
Spring项目设计很规范,对于有.yaml .properties.json获取环境的有后缀的url,有-的匹配列为是环境特殊的,而对ResourceController中的匹配规则是/name/…….且没有通配符,没有后缀,就像是普通的Controller,其中name表示applicationName
其中ResourceController中是通过流,最终会转把Environoment转换为properties的字符串形式,再把String返回,但是也支持直接返回流,此时方法均有synchronized以支持同步。
3、查看ResourceController的retrieve方法
该方法是具体处理转化的
方法如下: