Spring Cloud配置中心(Config)
Spring Cloud配置中心(Config)
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
这样配置中心就介绍完了,具体请参考项目示例:https://github.com/liubo-tech/spring-cloud-config。
Spring Cloud配置中心(Config)的更多相关文章
- (七)Spring Cloud 配置中心config
spring cloud config是一个基于http协议的远程配置实现方式. 通过统一的配置管理服务器进行配置管理,客户端通过http协议主动的拉取服务的的配置信息,完成配置获取. 下面我们对 ...
- 记录一个 spring cloud 配置中心的坑,命令行端口参数无效,被覆盖,编码集问题无法读取文件等.
spring cloud 配置中心 结合GIT , 可以运行时更新配置文件.发送指令让应用重新读取配置文件. 最近在测试服务器实现了一套,结果CPU 实用率暴增,使用docker compose启动 ...
- spring cloud 配置中心
1. spring cloud配置中心server 1.1 创建git仓库 首先在github上搭建一个存储配置中心的仓库,需要创建两个分支,一个是master,一个是dev分支.自己学习可以用公开库 ...
- springcloud(五):Spring Cloud 配置中心的基本用法
Spring Cloud 配置中心的基本用法 1. 概述 本文介绍了Spring Cloud的配置中心,介绍配置中心的如何配置服务端及配置参数,也介绍客户端如何和配置中心交互和配置参数说明. 配置中心 ...
- springcloud(六):Spring Cloud 配置中心采用数据库存储配置内容
Spring Cloud 配置中心采用数据库存储配置内容 转自:Spring Cloud Config采用数据库存储配置内容[Edgware+] Spring Cloud Server配置中心采用了G ...
- Spring Cloud配置中心搭建(集成Git)
1. 在Github(或其他)创建配置中心仓库bounter-config-repo,然后在仓库创建两个配置文件:simon.properties.susan.properties,链接如下: htt ...
- Spring Cloud配置中心内容加密
从配置获取的配置默认是明文的,有些像数据源这样的配置需要加密的话,需要对配置中心进行加密处理. 下面使用对称性加密来加密配置,需要配置一个密钥,当然也可以使用RSA非对称性加密,但对称加密比较方便也够 ...
- Spring Cloud配置中心高可用搭建
本文通过config server连接git仓库来实现配置中心,除了git还可以使用svn或者系统本地目录都行. 引入依赖 <dependencies> <dependency> ...
- Spring Cloud配置中心客户端读取配置
微服务连接配置中心来实现外部配置的读取. 引入依赖 <dependencies> <dependency> <groupId>org.springframework ...
随机推荐
- Win2008R2+Apache+PHP+Tomcat配置
一.VC运行库 对于Apache和PHP,在Windows上运行的话都需要对应VC运行库的支持,即Apache.PHP和VC运行库这三者的版本必须相对应,这就会带来很多问题,比如下了较新的Apache ...
- 基于PHP给大家讲解防刷票的一些技巧
刷票行为,一直以来都是个难题,无法从根本上防止. 但是我们可以尽量减少刷票的伤害,比如:通过人为增加的逻辑限制. 基于 PHP,下面介绍防刷票的一些技巧: 1.使用CURL进行信息伪造 $ch = c ...
- jQuery UI =>jquery-ui.js中sortable方法拖拽对象位置偏移问题
今天要处理sortable方法处理的对象,拖拽的时候,位置偏移的问题. 按理应该是鼠标在哪,对象就跟着在哪的 百度了一下问题,http://blog.csdn.net/samed/article/de ...
- 同时使用Union和Order by问题(ORA-00933错误)解决
之前,同事在编写视图的过程中遇到这样了这个错误.我把简化后的语句整理如下: 1: select 2: '2016' as nf, 3: qxdm, 4: round(sum(tbdlmj)/10000 ...
- 网络流24T
说出来你们可能不信,我咕了三个多星期了,今晚忽然不想再写题了,(写自闭了,把这边整理一下 1. 洛谷P2756 飞行员配对问题 二分图匹配: #include <bits/stdc++.h> ...
- git安装以及应用
1.安装完成后,设置用户信息:$ git config --global user.name "wangfg"$ git config --global user.email &q ...
- java JVM虚拟机
JVM垃圾处理方法(标记清除.复制.标记整理) 1.标记清除 标记阶段:先通过根节点,标记所有从根节点开始的对象,未被标记的为垃圾对象. 清除阶段:清除所有未被标记的对象. 2.复制算法 将原有的空间 ...
- Java 递归获取一个路径下的所有文件,文件夹名称
package com.readfile; import java.io.File; public class GetAllFiles { public static void main(String ...
- 最全的MonkeyRunner自动化测试从入门到精通(9)
最基本脚本功能开始编写(1)Monkeyrunner和Monkey的区别 1)Monkeyrunner工具在工作站上通过API定义的特定命令和事件控制设备或模拟器(可控) 2)精确控制事件之间的事件 ...
- HTML轮播图实现(前后端分离)
1,首先前后端分离用到了3个插件 2,异步请求后端获取数据库图片地址(图片名字) //图片轮播 axios({ url:'http://127.0.0.1:8000/userctrl/image', ...