Spring Cloud之配置中心的搭建
spring cloud是现在流行的分布式服务框架,它提供了很多有用的组件。比如:配置中心、eureka服务发现、消息总线、熔断机制等。
配置中心在spring cloud的众多组件中是比较基础的,它提供了配置文件的统一管理,可以很轻松的切换不通的环境。
它的具体结构如下:
- 存储配置文件的文件系统(通常使用git)
- 配置中心服务端(从文件系统获取最新的配置文件,为客户端提供配置信息)
- 配置客户端(从配置中心获取配置信息)
spring cloud是建立在spring boot基础上的,spring cloud离不开spring boot,所以我们的项目都是基于spring boot的。
配置文件一般我们放在git上,也好做版本控制。接下来我们讲一下配置中心的搭建。
配置中心搭建
首先,引入spring boot和spring cloud的依赖bom:
<dependencymanagement> <dependencies> <dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-dependencies</artifactid> <version>edgware.sr3</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <!-- import dependency management from spring boot --> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-dependencies</artifactid> <version>1.5.9.release</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencymanagement>
这里我们需要仔细看一下官方文档,spring cloud的finchley版本是基于spring boot2.0的,在spring boot1.5下是不能工作的。而edgware版本是基于1.5的,在2.0下不能正常工作。这点大家要注意,以免出现不必要的麻烦。
这里我们采用spring cloud 的edgware和spring boot的1.5版本。
然后倒入必须的依赖,如下:
<dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-config-server</artifactid> </dependency> </dependencies>
最后编写配置中心的启动类,如下:
@springbootapplication @enableconfigserver public class configserverapplication { public static void main(string[] args) { springapplication.run(configserverapplication.class, args); } }
@enableconfigserver标志着这个服务是一个配置中心服务,具体的信息在application.properties文件中配置:
#服务端口 server.port=9000 #配置文件的git地址 spring.cloud.config.server.git.uri=https://github.com/liubo-tech/spring-cloud-properties #配置文件的临时文件目录 spring.cloud.config.server.git.basedir=/d:/config-repo
服务端口和git地址大家都比较明白,第三个是配置临时文件的目录。在配置中心被调用后,配置中心会从git上拉取配置文件,并在本地缓存,这个就是配置缓存的目录,也可以不配置,使用系统默认的。这样配置中心就搭好了,也可以通过nginx搭建集群做的高可用。
访问配置文件格式的如下:
/{application}/{profile}[/{label}] /{application}-{profile}.yml /{label}/{application}-{profile}.yml /{application}-{profile}.properties /{label}/{application}-{profile}.properties
其中:
- {application}对应客户端的应用名称(spring.application.name)
- {profile}对应客户端的spring.profiles.active
- {label}是可选的git标签(默认为“master”)。
客户端调用
以前配置文件都是放在项目中,这使得我们在切换不同环境时非常麻烦,一些配置的敏感信息也对开发人员暴露了。
使用统一的配置中心就可以避免这些,让我们看一看客户端是如何调用的。
首先,导入必须依赖的jar包,如下:
<dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-starter-config</artifactid> </dependency> </dependencies>
只要spring cloud config client的jar在项目的classpath下,它就会在项目启动时从配置中心获取配置,通过bootstrap配置文件中的spring.cloud.config.uri属性指定配置中心。
这使得客户端的项目必须有一个bootstrap.yml或者bootstrap.properties文件,否则客户端是不会从配置中心加载配置文件的。
我们创建bootstrap.properties,如下:
#配置中心地址 spring.cloud.config.uri=http://localhost:9000
指定配置中心的地址,上面的例子中,配置中心的端口我们指定9000。我们在application.properties文件中配置应用的名称:
spring.application.name=eg-config
我们应用叫作“eg-config”,项目启动时会从配置中心加载eg-config的文件。接下来我们做个例子,创建一个bean,并从配置中心注入值
@component public class mybean { @value("${my.name}") private string name; public string getname() { return name; } public void setname(string name) { this.name = name; } }
其中,name会从配置中心加载属性my.name。启动类如下:
@springbootapplication public class application { public static void main(string[] args) { configurableapplicationcontext applicationcontext = springapplication.run(application.class, args); //获取bean并打印name字段 mybean bean = applicationcontext.getbean(mybean.class); system.out.println(bean.getname()); } }
启动后,控制台打印的结果如下:test
这样配置中心就介绍完了,具体请参考项目示例:。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
Spring Cloud之配置中心的搭建
-
idea快速搭建spring cloud注册中心与注册的方法
-
跟我学SpringCloud | 第六篇:Spring Cloud Config Github配置中心
-
整合spring项目之 加载 Spring 配置文件的两种方式
-
Spring Cloud Hoxton 版本微服务项目搭建eureka注册中心
-
一起来学Spring Cloud | 第一章 :如何搭建一个多模块的springcloud项目
-
二、记一次失败的 CAS 搭建 之 证书配置_PHP教程
-
荐 Spring源码之容器的基本实现:通过Xml配置装载Bean
-
spring基于注解的IOC环境搭建配置以及案例
-
一、记一次失败的 CAS 搭建 之 环境配置_PHP教程