摘要:在使用的时候遇到一些坑,在这里记录下,顺便梳理下这个使用。使用来配合做一个配置文件管理,需要一个的服务端和一个的客户端,服务端主要是和仓库进行一个连接,而的客户端是连接服务端来刷新配置服务的。刷新之后如下那个就是刚刚修改的内容
在使用Spring Config的时候遇到一些坑,在这里记录下,顺便梳理下这个使用。
Spring Cloud Config使用Spring Config来配合git做一个配置文件管理,需要一个Config的服务端和一个Config的客户端,服务端主要是和git仓库进行一个连接,而config的客户端是连接服务端来刷新配置服务的。
在Spring Cloud Config里面客户端需要使用Spring4.0出现的一个注解@Value配合一起使用
需要引入一下几个文件:
org.springframework.cloud spring-cloud-config-server org.springframework.cloud spring-cloud-config-server org.springframework.boot spring-boot-starter-web
新建一个application.yml
spring: application: name: microservice-server # name可以随便填写,代表这个服务的ServiceId cloud: config: server: git: uri: https://gitee.com/somersames/sprincloud-config.git # git的地址 username: yourname password: yourpassword server: port: 8099 # 服务开启的端口
新建一个启动类:
@SpringBootApplication @EnableConfigServer public class ConfigApplication { public static void main(String[] args) { SpringApplication.run(ConfigApplication.class); } }
@EnableConfigServer代表的是将这个微服务作为Config的服务器
配置文件随后在git服务器中新建几个文件,并且按照peoperties的格式输入内容,例如profile=ad如下:
microservice-foo.properties microservice-foo-dev.properties microservice-foo-test.properties
分别代表的是默认配置和开发环境以及测试环境的配置文件。
开启服务端运行服务端,然后访问URL,其中URL的格式为localhost:port/默认的项目名称/分支.格式
这个URL的格式有很多种格式,具体的可以百度之后再自己尝试
{"name":"microservice-foo","profiles":["dev.json"],"label":"master","version":"7ac2a341dfe7959b809b7d5ec70b980970208b91","state":null,"propertySources":[{"name":"https://gitee.com/somersames/sprincloud-config.git/microservice-foo.properties","source":{"profile":"default-1.0-changeewafasf"}}]}添加客户端
客户端不负责直接和git进行通信,而是直接和Config的服务端进行通信获取最新的数据
新建一个工程并且添加一个配置文件bootstrap.yml,没错,是bootstrap.yml,然后再新建一个配置文件application.yml.
在bootstrap.yml中添加内容:
spring: application: name: microservice-foo # 这里的名称填写项目的名称,也就是在之前获取的json里面的那个name cloud: config: uri: http://localhost:8099/ # 填写Config服务端地址 profile: dev #项目环境 label: master #项目分支
在Application.yml里面添加内容:
server: port: 8088 # 服务开启的端口,任意即可
新建一个Controller
@RestController @RequestMapping("config") public class FeignController { @Value("${profile}") // 这里的profile不是随便取得,这里取得是上述josn字符串里面的propertySources 下的 source 里面的那个键,在这个例子里面就是profile, private String profile; @RequestMapping(value = "/profile",method = RequestMethod.GET) public String hello(){ return this.profile; } }
其他无需改动,然后访问localhost:8099/config/profile,可以看到如下结果:
刷新有时候需要比如动态刷新git的最新配置的话,需要引入一个新的包:
org.springframework.boot spring-boot-starter-actuator 1.2.7.RELEASE
然后在Controller里面添加注解@RefreshScope,但是需要注意的是高版本需要在bootstrap.yml里面添加一个配置management:security:enabled: false否则会导致修改之后请求refresh刷新不出来。
自己通过git修改那个文件之后继续如下操作:
然后POSTMAN发出一个POST请求,
如果在高版本里面不添加那个配置会导致刷新不出来,如果自己刷新不出来,请尝试添加那个配置,另外那个额外添加的配置需要按照格式自己调整下。刷新之后如下:
那个cvcvcv就是刚刚修改的内容
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/69191.html
摘要:集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。这样就高兴了,可以专心写自己的,前端就专门交由小周负责了。于是,小周和就变成了协作开发。都是为了项目正常运行以及迭代。 一、前言 只有光头才能变强 认识我的朋友可能都知道我这阵子去实习啦,去的公司说是用SpringCloud(但我觉得使用的力度并不大啊~~)... 所以,这篇主要来讲讲SpringClou...
摘要:集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。这样就高兴了,可以专心写自己的,前端就专门交由小周负责了。于是,小周和就变成了协作开发。都是为了项目正常运行以及迭代。 一、前言 只有光头才能变强 认识我的朋友可能都知道我这阵子去实习啦,去的公司说是用SpringCloud(但我觉得使用的力度并不大啊~~)... 所以,这篇主要来讲讲SpringClou...
摘要:在舱壁模式中可以隔离每个远程资源,并分配各自的线程池,使之互不影响。 springcloud 总集:https://www.tapme.top/blog/detail/2019-02-28-11-33 本次用到全部代码见文章最下方。 一、为什么要有客户端弹性模式 所有的系统都会遇到故障,分布式系统单点故障概率更高。如何构建应用程序来应对故障,是每个软件开发人员工作的关键部分。但是通...
阅读 3246·2021-09-22 15:58
阅读 1715·2019-08-30 14:17
阅读 1716·2019-08-28 18:05
阅读 1504·2019-08-26 13:33
阅读 683·2019-08-26 12:20
阅读 605·2019-08-26 12:18
阅读 3192·2019-08-26 11:59
阅读 1400·2019-08-26 10:36