spring cloud学习(六)Spring Cloud Config
Spring Cloud Config

参考个人项目
参考个人项目 : (希望大家能给个star~)
https://github.com/FunriLy/springcloud-study/tree/master/%E6%A1%88%E4%BE%8B5
什么是 Spring Cloud Config?
配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。
场景介绍:在一个 Application
中,很经常需要连接资源和其它应用,经常有很多需要外部设置的信息去调整Application行为。我们在实际开发应用中的会经常见到的xml、properties、yaml等就是配置信息,但这种做法有一定的缺陷:每次更新需要重新打包和重启。
创建 Spring Cloud Config Server(Git 存储)
这里我用了我原本的”服务注册中心”(Eureka Server),将其改造为”配置中心”(Config Server)。
引入依赖
<!-- Config Server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
- 在启动主类添加
@EnableConfigServer注解,开启 Config Server。
@SpringBootApplication
@EnableEurekaServer
@EnableConfigServer
public class MySpringCloudApplication {
public static void main(String[] args) {
SpringApplication.run(MySpringCloudApplication.class, args);
}
}
在Github上创建一个项目,并在其中添加配置文件 config-client.properties,在里面添加一个属性
config=hello world !。在
application.properties中配置服务信息以及git信息(这里不包括了 Eureka Server 的配置,自行补充)
server.port=8761
spring.cloud.config.server.git.uri=https://github.com/FunriLy/springcloud-study/
spring.cloud.config.server.git.searchPaths=config-repo
spring.cloud.config.server.git.username=Username
spring.cloud.config.server.git.password=Password
- 启动工程 Config Server。访问 http://localhost:8761/config-client/default/ (关于这个URL请参考附录),可以看到以下配置信息:
{
"name": "config-client",
"profiles": [
"default"
],
"label": null,
"version": "af7ce2a15dcdea9dab42e6b44d37e401072382d8",
"propertySources": [
{
"name": "https://github.com/FunriLy/springcloud-study/config-repo/config-client.properties",
"source": {
"configword": "hello world !"
}
}
]
}
创建一个Spring Cloud Config Client
这里我用到了原来的”服务提供者”(Eureka Client),将其改造为 Config Client。
在
resource下创建bootstrap.properties,并设置信息,具体如下:
spring.application.name=config-client
spring.cloud.config.profile=default
spring.cloud.config.label=master
spring.cloud.config.uri=http://localhost:8761/
注意这里是bootstrap.properties而不是appliction.properties。
因为bootstrap.properties会在应用启动之前读取,而spring.cloud.config.uri会影响应用启动
- 创建一个Controller来进行测试。
@RestController
public class ConfigController { @Value("${configword}")
String configword; @RequestMapping("/config")
public String printfConfig(){
return "The Config Word Is : "+configword;
}
}
- 启动 Config Client,访问 http://localhost:1111/config 。就能看到:
The Config Word Is : hello world !
附录
来源于 Spring Cloud Config 中文文档。
URL与配置文件的映射关系
- /{application}/{profile}[/{label}]
- /{application}-{profile}.yml
- /{label}/{application}-{profile}.yml
- /{application}-{profile}.properties
- /{label}/{application}-{profile}.properties
application是SpringApplication的spring.config.name,(一般来说’application’是一个常规的Spring Boot应用),profile是一个active的profile(或者逗号分隔的属性列表),label是一个可选的git标签(默认为”master”)。
比如,我的文件名是”config-client”,一般在Github上都是default环境,默认为master分支。所以就是/config-client/default/master
Config Server 配置文件
- spring.cloud.config.server.git.uri:配置git仓库位置
- spring.cloud.config.server.git.searchPaths:配置仓库路径下的相对搜索位置,可以配置多个
- spring.cloud.config.server.git.username:访问git仓库的用户名
- spring.cloud.config.server.git.password:访问git仓库的用户密码
Config Client 配置文件
- spring.application.name:对应前配置文件中的{application}部分
- spring.cloud.config.profile:对应前配置文件中的{profile}部分
- spring.cloud.config.label:对应前配置文件的git分支
- spring.cloud.config.uri:配置中心的地址
其他
在Config Server中,还有一种不使用Git的”native”的配置方式,这种方式是从本地classpath 或文件系统中加载配置文件(使用 “spring.cloud.config.server.native.searchLocations”配置项进行设置)。 加载Config Server 的”spring.profiles.active=native”配置项可以开启native配置。如:
spring.profiles.active=native
spring.cloud.config.server.native.searchLocations=file:D:/properties
注意 : 牢记使用file:前缀来指示资源(默认没有前缀是从classpath中去文件)。也可以嵌入${}环境参数占位符,但是windows系统下使用绝对路径,前缀后面需要多加个”/”。
spring cloud学习(六)Spring Cloud Config的更多相关文章
- Spring Cloud 学习 (六) Spring Cloud Config
在实际开发过程中,每个服务都有大量的配置文件,例如数据库的配置.日志输出级别的配置等,而往往这些配置在不同的环境中也是不一样的.随着服务数量的增加,配置文件的管理也是一件非常复杂的事 在微服务架构中, ...
- spring boot 学习(六)spring boot 各版本中使用 log4j2 记录日志
spring boot 各版本中使用 log4j2 记录日志 前言 Spring Boot中默认日志工具是 logback,只不过我不太喜欢 logback.为了更好支持 spring boot 框架 ...
- Spring boot 学习六 spring 继承 mybatis (基于注解)
MyBatis提供了多个注解如:@InsertProvider,@UpdateProvider,@DeleteProvider和@SelectProvider,这些都是建立动态语言和让MyBatis执 ...
- Spring Cloud 学习 之 Spring Cloud Eureka(源码分析)
Spring Cloud 学习 之 Spring Cloud Eureka(源码分析) Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 ...
- Spring Cloud 学习 之 Spring Cloud Eureka(搭建)
Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 文章目录 搭建服务注册中心: 注册服务提供者: 高可用注册中心: 搭建服务注册中心: ...
- spring cloud学习(六) 配置中心-自动更新
上一篇学习了spring cloud config的基本使用,但发现有个问题,就是每次更改配置后,都需要重启服务才能更新配置,这样肯定是不行的.在上网查资料了解后,spring cloud支持通过AM ...
- Spring Cloud学习笔记--Spring Boot初次搭建
1. Spring Boot简介 初次接触Spring的时候,我感觉这是一个很难接触的框架,因为其庞杂的配置文件,我最不喜欢的就是xml文件,这种文件的可读性很不好.所以很久以来我的Spring学习都 ...
- Spring Cloud 学习 (九) Spring Security, OAuth2
Spring Security Spring Security 是 Spring Resource 社区的一个安全组件.在安全方面,有两个主要的领域,一是"认证",即你是谁:二是& ...
- spring学习 六 spring与mybatis整合
在mybatis学习中有两种配置文件 :全局配置文件,映射配置文件.mybatis和spring整合,其实就是把mybatis中的全局配置文件的配置内容都变成一个spring容器的一个bean,让sp ...
随机推荐
- C++设计模式 之 “对象性能” 模式:Singleton、Flyweight
“对象性能”模式 面向对象很好地解决了“抽象”的问题,但是必不可免地要付出一定的代价.对于通常情况来讲,面向对象的成本大都可以忽略不计.但是某些情况,面向对象所带来的成本必须谨慎处理. 典型模式 # ...
- 20145310 Exp7 网络欺诈技术防范
实验后回答问题 (1)通常在什么场景下容易受到DNS spoof攻击 局域网内最容易遭受攻击.通过DNS欺骗就可以轻松地将网址转到钓鱼网站.而我们平时最常用的局域网应该就是公共热点吧,特别是有的地方的 ...
- poj 3368 Frequent values -Sparse-Table
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 16537 Accepted: 5981 Description You ...
- 关于python环境的一些安装设置
操作系统Redhat Linux,自带python2.6.Python程序的运行其实相当简单,只需在操作系统中安装并配置好python环境即可,和运行java需要配置jre一样(哪里简单,真简单就不会 ...
- Python3基础 os.path.basename 处理路径字符串,返回文件的名字
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- IIS中添加ftp站点
1.创建Windows账号 右击点击“我的电脑”,选择“管理”打开服务器管理的控制台.展开“服务器管理器”,一路展开“配置”.“本地用户和组”,点“用户”项.然后在右边空白处点右键,选择“新用户”将打 ...
- Ubuntu上 配置Eclipse:安装CDT
在最新的 Ubuntu Kylin 16.04 中安装了eclipse,在纠结了很久的网络问题之后,开始了eclipse的配置以便在上面运行ns3. 在官方网站上安装完 eclipse LUNA 之后 ...
- tornado 如何向html传list变量啊?
py: html:
- 使用wsHttpBinding构建Message安全模式和UserName授权
http://www.cnblogs.com/artech/archive/2011/05/22/authentication_01.html https://www.cnblogs.com/Fran ...
- 简易页面场景滚动的jquery插件
(function($){ $.extend($.fn, { scene_scroll:function(arg_obj){ // 参数检测 // 场景数组 var $scene_arr = arg_ ...