当前位置: 首页 > news >正文

Spring Cloud全解析:配置中心之springCloudConfig配置存储

配置存储

springCloudConfig是使用EnvironmentRepository来存储服务器的配置数据的,返回Environment对象

public Environment(@JsonProperty("name") String name,@JsonProperty("profiles") String[] profiles,@JsonProperty("label") String label, @JsonProperty("version") String version,@JsonProperty("state") String state) {super();this.name = name;this.profiles = profiles;this.label = label;this.version = version;this.state = state;}

基于本地文件

如果存储是基于文件的,即配置了spring.cloud.config.server.native.searchLocation,此时使用的是NativeEnvironmentRepository来查找配置

使用本地文件的前提是要配置spring.prifiles.active=native

@Configuration(proxyBeanMethods = false)
@Profile("native")
class NativeRepositoryConfiguration {@Beanpublic NativeEnvironmentRepository nativeEnvironmentRepository(NativeEnvironmentRepositoryFactory factory,NativeEnvironmentProperties environmentProperties) {return factory.build(environmentProperties);}}

只有配置了spring.prifiles.active=native才会创建NativeEnvironmentRepository这个bean

基于Git

如果存储是基于git的,即配置了spring.cloud.config.server.git.uri,此时使用的是JGitEnvironmentRepository来查找配置

if (getUri().startsWith(FILE_URI_PREFIX)) {return copyFromLocalRepository();
}
else {return cloneToBasedir();
}

如果使用file:前缀来进行设置的,此时是从本地Git仓库获取的,也就不需要克隆

private Git copyFromLocalRepository() throws IOException {Git git;File remote = new UrlResource(StringUtils.cleanPath(getUri())).getFile();Assert.state(remote.isDirectory(), "No directory at " + getUri());File gitDir = new File(remote, ".git");Assert.state(gitDir.exists(), "No .git at " + getUri());Assert.state(gitDir.isDirectory(), "No .git directory at " + getUri());git = this.gitFactory.getGitByOpen(remote);return git;
}

如果不是用file前缀来进行设置的,就需要从git库去进行clone

private Git cloneToBasedir() throws GitAPIException {CloneCommand clone = this.gitFactory.getCloneCommandByCloneRepository().setURI(getUri()).setDirectory(getBasedir());configureCommand(clone);try {return clone.call();}catch (GitAPIException e) {this.logger.warn("Error occured cloning to base directory.", e);deleteBaseDirIfExists();throw e;}
}

https://zhhll.icu/2023/框架/微服务/springcloud/配置中心/springCloudConfig/5.配置存储/

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux系统-系统信息网络目录文件的相关命令
  • 微服务基础知识
  • 8.19Qt作业
  • C语言内存操作函数
  • 力扣第 411 场周赛题解
  • 西安旅游系统--论文pf
  • 每日快讯 | 京东健康:2024年上半年营收283亿元
  • vue+fastadmin跨域请求问题
  • 【Docker】宿主机上装个ES和使用docker装个ES有啥不一样
  • 【gitlab】gitlab-ce:17.3.0-ce.0 之2:配置
  • Windows 上使用 OpenSSL 生成一个 10 年有效期的自签名 PFX 证书
  • Spring Boot 3.3 【五】Spring Boot 整合JPA-原生SQL支持
  • 萝卜快跑和端到端的自动驾驶(1)
  • mysql 之 explain
  • c语言基础-------数组元素的指针
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • 11111111
  • Apache的80端口被占用以及访问时报错403
  • const let
  • express.js的介绍及使用
  • Python学习之路16-使用API
  • vue中实现单选
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 高度不固定时垂直居中
  • 力扣(LeetCode)965
  • 聊聊flink的BlobWriter
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 时间复杂度与空间复杂度分析
  • 微服务框架lagom
  • 一个SAP顾问在美国的这些年
  • 第二十章:异步和文件I/O.(二十三)
  • 积累各种好的链接
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​Spring Boot 分片上传文件
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (1)(1.13) SiK无线电高级配置(五)
  • (10)ATF MMU转换表
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (分布式缓存)Redis持久化
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot教学评价 毕业设计 641310
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (五)c52学习之旅-静态数码管
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)平衡树
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网