0702-spring cloud config-git仓库配置、用户授权
一、概述
例如:git、svn、基于git本地存储、 本地存储、Vault
二、git
EnvironmentRepository的默认实现使用Git后端。要更改存储库的位置,可以在配置服务器中设置“spring.cloud.config.server.git.uri”配置属性(例如,在application.yml中)。
优点:版本审计、分布式简单
准备工作
1、新建两个git:
sample:https://github.com/bjlhx15/spring-cloud-config-test-sample.git
special:https://github.com/bjlhx15/spring-cloud-config-test-special.git
2、克隆到本地
在每个仓库中增加application.yml,内容如下:
sample中的配置:
profile: sample
special中的配置:
profile: special
然后提交git。
2.1、Git URI中的占位符
2.1.1、开发
代码:https://github.com/bjlhx15/spring-cloud/tree/master/config-part/microservice-config-server
修改配置文件:【注意uri中的通配符{application}】
server: port: 8080 spring: cloud: config: server: git: uri: https://github.com/bjlhx15/{application}
2.1.1、访问
http://localhost:8080/spring-cloud-config-test-sample-default.yml
http://localhost:8080/spring-cloud-config-test-special-default.yml
可以发现,不同微服务对应不同git配置服务,配置隔离。
2.2、模式匹配和多个存储库
还有对应用程序和配置文件名称进行模式匹配的更复杂要求的支持。模式格式是带有通配符的{application} / {profile}名称的逗号分隔列表(其中可能需要引用以通配符开头的模式)。例:
在准备工作的special中添加开发【spring-cloud-config-test-special-dev.yml】和测试环境【spring-cloud-config-test-special-test.yml】
内容分别如下:
spring-cloud-config-test-special-dev.yml
profile: special-dev
spring-cloud-config-test-special-test.yml
profile: special-test
2.2.1、开发
代码:https://github.com/bjlhx15/spring-cloud/tree/master/config-part/microservice-config-server
修改配置文件:
server: port: 8080 spring: cloud: config: server: git: uri: https://github.com/bjlhx15/spring-cloud-config-test-repo #公用的 repos: simple: https://github.com/bjlhx15/spring-cloud-config-test-sample special: pattern: special*/dev*,*special*/test* uri: https://github.com/bjlhx15/spring-cloud-config-test-special
实际测试出错,正在排查中
Binding to target org.springframework.cloud.config.server.ssh.SshUriProperties(uri=https://github.com/bjlhx15/spring-cloud-config-test-repo hostKeyAlgorithm=null, hostKey=null, privateKey=null, ignoreLocalSshSettings=false, knownHostsFile=null, preferredAuthentications=null, strictHostKeyChecking=true,){repos={special=org.springframework.cloud.config.server.ssh.SshUriProperties(uri=https://github.com/bjlhx15/spring-cloud-config-test-special hostKeyAlgorithm=null, hostKey=null, privateKey=null, ignoreLocalSshSettings=false, knownHostsFile=null, preferredAuthentications=null, strictHostKeyChecking=true,)}} failed: Property: spring.cloud.config.server.git.repos[sample] Value: https://github.com/bjlhx15/spring-cloud-config-test-sample Reason: Failed to convert property value of type 'java.lang.String' to required type 'org.springframework.cloud.config.server.ssh.SshUriProperties$SshUriNestedRepoProperties' for property 'repos[sample]'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'org.springframework.cloud.config.server.ssh.SshUriProperties$SshUriNestedRepoProperties' for property 'repos[sample]': no matching editors or conversion strategy found
可以查看:org.springframework.cloud.config.server.environment.MultipleJGitEnvironmentRepository,中repos属性
进入org.springframework.cloud.config.server.environment.MultipleJGitEnvironmentRepository.PatternMatchingJGitEnvironmentRepository:查看到pattern和URI
repo中的pattern属性实际上是一个数组,因此您可以在属性文件中使用YAML数组(或[0],[1]等后缀)绑定到多个模式。如果您要使用多个配置文件运行应用程序,则可能需要执行此操作。
spring: cloud: config: server: git: uri: https://github.com/spring-cloud-samples/config-repo repos: development: pattern: - '*/development' - '*/staging' uri: https://github.com/development/config-repo staging: pattern: - '*/qa' - '*/production' uri: https://github.com/staging/config-repo
2.3、searchPaths
每个存储库还可以选择将配置文件存储在子目录中,并且可以将搜索这些目录的模式指定为searchPaths。例如在顶层:
server: port: 8080 spring: cloud: config: server: git: uri: https://github.com/bjlhx15/spring-cloud-config-test-repo searchPaths: - foo # foo 路徑 - bar # bar 路徑
访问:
http://localhost:8080/foo-dev.yml
http://localhost:8080/bar-dev.yml
http://localhost:8080/de-dev.yml
服务器搜索顶层 “/”和foo子目录中的配置文件,以及名称以“bar”开头的任何子目录。使管理清晰一些
其实也可以使用通配符
spring: cloud: config: server: git: uri: https://github.com/spring-cloud-samples/config-repo searchPaths: '{application}'
2.4、cloneOnStart
查看以上代码可知,都是在调用使用时候加载配置
Adding property source: file:/C:/Users/ADMINI~1/AppData/Local/Temp/config-repo-6862549358101599484/application.yml
增加参数
spring: cloud: config: server: git: uri: https://git/common/config-repo.git cloneOnStart: true #全部启动时候加载 repos: team-a: pattern: team-a-* cloneOnStart: true uri: http://git/team-a/config-repo.git team-b: pattern: team-b-* cloneOnStart: false uri: http://git/team-b/config-repo.git team-c: pattern: team-c-* uri: http://git/team-a/config-repo.git
三、用户授权
配置用户名密码等
server: port: 8080 spring: cloud: config: server: git: uri: https://github.com/bjlhx15/spring-cloud-config-test-repo username: *** password: ***
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!