通过自己实践后总结的SpringCloud配置加载流程,不一定准确。
加载流程
- 在启动应用时,我们可以通过命令行参数设定配置
- 应用启动初期会有一个引导阶段,此时仅读取bootstrap配置,根据这些配置完成一系列引导动作(具体包括哪些还不清楚)
- 根据引导阶段获得的应用本地配置路径(spring.config,默认值:application)读取本地配置
- 获取远程配置
优先级
几种配置的优先级大致如下:
远程配置 > 命令行参数配置 > application > bootstrap
所有配置已经加载完成,正式启动应用(比如启动服务端口监听等,所以服务端口也是可以在远程配置的)。
配置服务器自身是否可以从远程获得配置?
答案是可以。由于自己就是配置服务器,所以它显然没有必要像其他应用一样配置一个spring.cloud.config.uri参数了,它可以直接从GIT获取配置。
如果启用了 @EnableConfigServer
那么在引导阶段会检查 spring.cloud.config.server.bootstrap 参数是否为 true,该参数指示该配置服务器自身是否需要从远程配置库加载配置。
显然,如果需要加载远程配置,则必须同时在bootstrap中指定用以定位远程配置的其他参数,如spring.application.name、spring.cloud.config.server.git.uri、spring.cloud.config.profile等。