上面写了如何使用 spring cloud config 构建配置服务,这一节来构建 licensingserivce 服务,使用上面的配置服务来获取配置文件。
1、创建 springboot 工程创建 springboot 项目 licensingservice,主要依赖如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client</artifactId> </dependency> 2、编写配置文件共两个配置文件,application.yml,bootstrap.yml
application.yml
本配置文件用于存放留在本地配置信息,如果存在同名配置,本地的会被覆盖,不会生效
server: port: 10099
bootstrap.yml
给 spring cloud config client 读取的配置文件,根据该配置向配置中心请求
spring: application: #指定名称,以便spring cloud config客户端知道查找哪个配置 name: licensingservice profiles: #指定环境(default,dev,prod) active: dev cloud: config: #指定config server地址 uri: :8888PS:如果想要覆盖 bootstrap.yml 的配置可在启动命令加上-d 参数,如:
java -Dsptring.cloud.config.uri=.... -Dspring.profiles.active=prod xxxxx.jar
3、启动启动 licensingservice 可以发现启动端口为 10011,说明远程读取配置生效了。
三、使用 git 作为配置服务的数据源 1、创建源配置文件在 github 某个仓库下创建配置文件,比如在https://github.com/FleyX/demo-project仓库下的springcloud/config目录下创建 licengingservice 服务的配置文件。
2、修改 config server 配置文件修改 confsvr 中的 application.yml
server: port: 8888 spring: profiles: # 使用文件系统来存储配置信息,需要设置为native,git设置为git active: git application: name: test cloud: config: server: native: # 使用文件来存放配置文件,为每个应用程序提供用逗号分隔的文件夹列表 searchLocations: file:///D:/configFolder/licensingservice git: uri: https://github.com/FleyX/demo-project # 查找配置文件路径(,分隔) search-paths: springcloud/config/licensingservice #如果为公开仓库,用户名密码可不填写 username: password: #配置git仓库的分支 label: master 3、启动重新启动,即可发现配置成功生效。
四、配置刷新使用 spring cloud 配置服务器时,有一个问题是如何在属性变化时动态刷新应用程序。spring cloud 配置服务始终提供最新版本的属性,对低层存储库属性的更改将会是最新的。但是 config client 并不会知道配置的变更,因此不会自动刷新属性。
Spring Boot Actuator 提供了一个@RefreshScope属性来重新读取应用程序配置信息,开发人员可通过/refresh进行刷新。该注释需要注释在启动入口类上。注意:只会加载自定义 Spring 属性,例如数据库,端口等配置不会重新加载。
总结 本篇只是用到了 spring-cloud-config 这个来进行配置集中管理,并没有涉及到微服务,在下一篇将开始微服务的学习。
本篇两个项目代码存放于:点击跳转
本篇发布于:个人博客 ,这里仅做备份