Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。
开发准备开发环境
JDK:1.8
SpringBoot:2.1.1.RELEASE
SpringCloud:Finchley
注:不一定非要用上述的版本,可以根据情况进行相应的调整。需要注意的是SpringBoot2.x以后,jdk的版本必须是1.8以上!
确认了开发环境之后,我们再来添加相关的pom依赖。
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies> SpringCloud Config 示例目前SpringCloud Config的使用主要是通过Git/SVN方式做一个配置中心,然后每个服务从其中获取自身配置所需的参数。SpringCloud Config也支持本地参数配置的获取。如果使用本地存储的方式,在 application.properties 或 application.yml 文件添加 spring.profiles.active=native 配置即可,它会从项目的 resources路径下读取配置文件。如果是读取指定的配置文件,那么可以使用 spring.cloud.config.server.native.searchLocations = file:D:/properties/ 来读取。
服务端首先是服务端这块,首先创建一个注册中心,为了进行区分,创建一个springcloud-config-eureka的项目。 代码和配置和之前的基本一样。
application.properties配置信息:
配置信息:
spring.application.name=springcloud-hystrix-eureka-server server.port=8005 eureka.client.register-with-eureka=false eureka.client.fetch-registry=false eureka.client.serviceUrl.defaultZone=http://localhost:8005/eureka/配置说明:
spring.application.name: 这个是指定服务名称。
server.port:服务指定的端口。
eureka.client.register-with-eureka:表示是否将自己注册到Eureka Server,默认是true。
eureka.client.fetch-registry:表示是否从Eureka Server获取注册信息,默认为true。
eureka.client.serviceUrl.defaultZone: 这个是设置与Eureka Server交互的地址,客户端的查询服务和注册服务都需要依赖这个地址。
服务端这边只需要在SpringBoot启动类添加@EnableEurekaServer注解就可以了,该注解表示此服务是一个服务注册中心服务。
代码示例:
@SpringBootApplication @EnableEurekaServer public class ConfigEurekaApplication { public static void main(String[] args) { SpringApplication.run(ConfigEurekaApplication.class, args); System.out.println("config 注册中心服务启动..."); } }创建好了注册中心之后,我们再来创建一个配置中心,用于管理配置。
创建一个springcloud-config-server的项目。然后在application.properties配置文件添加如下配置:
配置信息:
spring.application.name=springcloud-config-server server.port=9005 eureka.client.serviceUrl.defaultZone=http://localhost:8005/eureka/ spring.cloud.config.server.git.uri = https://github.com/xuwujing/springcloud-study/ spring.cloud.config.server.git.search-paths = /springcloud-config/config-repo spring.cloud.config.server.git.username = spring.cloud.config.server.git.password =配置说明:
spring.application.name: 这个是指定服务名称。
server.port:服务指定的端口。
eureka.client.serviceUrl.defaultZone: 这个是设置与Eureka Server交互的地址,客户端的查询服务和注册服务都需要依赖这个地址。
spring.cloud.config.server.git.uri: 配置的Git长裤的地址。
spring.cloud.config.server.git.search-paths: git仓库地址下的相对地址 多个用逗号","分割。
spring.cloud.config.server.git.username:git仓库的账号。
spring.cloud.config.server.git.password:git仓库的密码。
注:如果想使用本地方式读取配置信息,那么只需将spring.cloud.config.server.git的配置改成spring.profiles.active=native,然后在resources路径下新增一个文件即可。
这里为了进行本地配置文件测试,新建一个configtest.properties配置文件,添加如下内容:
word=hello world代码这块也很简单,在程序主类中,额外添加@EnableConfigServer注解,该注解表示启用config配置中心功能。代码如下:
、、、
@EnableDiscoveryClient @EnableConfigServer @SpringBootApplication public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); System.out.println("配置中心服务端启动成功!"); } }、、、
完成上述代码之后,我们的配置中心服务端已经构建完成了。
客户端