我们使用 Spring Cloud Config ( Dalston.SR5
),云客户端使用 Spring Boot 2.x、Spring Cloud Bus 和Finchley.SR1
.
我从这个答案中了解到为什么云客户端应用程序使用 Config 为父级引导,SpringBootApplication
然后在绑定云总线后再次引导。我很好。
我的问题是有没有办法区分这两个引导请求?
我问的原因是我们的配置服务器生成凭据并将它们返回给客户端进行身份验证。两个引导程序意味着两组凭据,只有一组被使用,这是一种浪费。
据我所知,每次都发送相同的引导有效负载ConfigServicePropertySourceLocator
,这使 Config 没有机会。
是否有覆盖/挂钩,以便我可以让 Config 知道不要第二次生成凭据?
(我可以从配置/服务器端解决,但这有点绝望,而且我不愿意尝试管理状态 - 跨越两个恰好相隔约 20 秒的其他相同请求。)
我目前最好的想法是按照以下方式进行子类化PropertySourceBootstrapConfiguration
和更新spring.factories
:
# Bootstrap components
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
org.springframework.cloud.bootstrap.config.MyCountingPropertySourceBootstrapConfiguration,\
在发出任何请求之前,我应该能够检查PropertySource
s 并查找第一个成功引导程序将返回的任何属性。如果存在,我会尝试为我的配置服务器获取额外的标签或配置文件ConfigServicePropertySourceLocator
,以便第二次获取。
我想这可以工作,但有没有更清洁/更 Spring Boot-y 的方式?