本文小编为大家详细介绍“spring cloud config整合gitlab如何搭建分布式的配置中心”,内容详细,步骤清晰,细节处理妥当,希望这篇“spring cloud config整合gitlab如何搭建分布式的配置中心”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
前提:在gitlab中的工程下新建一个配置文件configserver-dev.properties
一、配置Server
1、添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
2、在Application主类开启支持
@EnableConfigServer
3、配置application.yml文件
server:
port: 8888
spring:
application:
name: config
cloud:
config:
server:
git:
uri: https://gitlab.xxx.com/xxxxx/xxxxx.git # 配置gitlab仓库的地址,注意,此处必须以.git结尾
search-paths: /config-repo # gitlab仓库地址下的相对地址,可以配置多个,用,分割。
username: your username # gitlab仓库的账号
password: your password # gitlab仓库的密码
注意:如果配置文件放置在Git存储库的根目录下,则无需使用searchPaths参数,本例中的配置文件在config-repo目录中,因此使用searchPaths参数提示Config服务器搜索config-repo子目录
4、启动server,并在浏览器输入http://localhost:8888/configserver/dev/master
{
"name": "configserver",
"profiles": [
"dev"
],
"label": "master",
"version": "073cda9ce85a3eed00e406f4ebcc4651ee4d9b19",
"state": null,
"propertySources": [
{
"name": "https://gitlab.xxx.com/xxxxx/xxxxx/project/config-repo/configserver.properties",
"source": {
"name": "chhliuxyh",
"hello": "i'm the king of the world!!!",
"profile": "profile-default"
}
}
]
}
可以看到server端已经可以从gitlab上读取到配置文件了。可以通过如下表单中的方式访问gitlab上的资源
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
例如在浏览器中输入:http://localhost:8888/configserver-dev.yml,结果如下:
hello: i'm the king of the world!!!
name: chhliuxyh
profile: profile-default
二、配置客户端
1、添加pom依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2、配置bootstrap.yml文件
注意:此处的配置文件需要放在bootstrap.properties或者是bootstrap.yml文件中,因为config的相关配置会先于application.properties,而bootstrap.properties的加载也是先于application.properties
server:
port: 8889
spring:
application:
name: configserver # 必须与配置文件的前缀一致,例如此处我们的配置文件名是configserver-dev.properties,则此处需配置成configserver
cloud:
config:
uri: http://localhost:8888/ //配置spring cloud config服务端的url
profile: dev # 指定profile
label: master # 指定gitlab仓库的分支
3、验证客户端
在客户端新增一个Controller
package com.chhliu.springcloud.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
@RefreshScope //注解@RefreshScope指示Config客户端在服务器配置改变时,也刷新注入的属性值
public class SpringcloudConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudConfigClientApplication.class, args);
}
@Value("${hello}") // 读取gitlab配置文件中的属性,如果我们读取到了值,说明客户端是OK的
private String profile;
@GetMapping("/hello")
public String hello() {
return this.profile;
}
}
在浏览器中访问:http://localhost:8889/hello,结果如下:
i'm the king of the world!!!
说明客户端已经可以从服务端获取到值了。
三、动态刷新
无需重新启动客户端,即可更新Spring Cloud Config管理的配置
1、更新gitlab仓库中configserver-dev.properties配置文件中hello对应的属性值
2、访问http://localhost:8888/configserver/dev/master,发现server端内容已经更新
3、对Conf客户端发一个POST请求http://localhost:8889/refresh,返回200 OK。再次访问http://localhost:8889/hello,可见在并未重启客户端服务的情况下,读到的属性值已经动态更新
PS:要想实现动态刷新,需要在pom文件中添加以下starter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
读到这里,这篇“spring cloud config整合gitlab如何搭建分布式的配置中心”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4436209/blog/4353742