【发布时间】:2017-05-13 06:40:50
【问题描述】:
POST 在云配置客户端上重新启动后,会创建一个新的ConfigServicePropertySourceLocator,并保留旧的ConfigServicePropertySourceLocator。问题是,它们都是在重启后被调用的,所以如果我 POST 重启 10 次,我会得到 11 个 bean 和 11 个调用,这会导致 11 个 GET 调用配置服务器。
断点在SpringApplication#addInitializers(ApplicationContextInitializer<?>... initializers)
this = {SpringApplication@2244}
initializers = {ApplicationContextInitializer[2]@6093}
0 = {PropertySourceBootstrapConfiguration$$EnhancerBySpringCGLIB$$56dce074@6097}
1 = {EnvironmentDecryptApplicationInitializer@6098}
this.initializers = {ArrayList@3671} size = 10
0 = {DelegatingApplicationContextInitializer@3784}
1 = {ContextIdApplicationContextInitializer@3785}
2 = {ConfigurationWarningsApplicationContextInitializer@3786}
3 = {ServerPortInfoApplicationContextInitializer@3787}
4 = {SharedMetadataReaderFactoryContextInitializer@3788}
5 = {AutoConfigurationReportLoggingInitializer@3789}
6 = {BootstrapApplicationListener$AncestorInitializer@3678}
7 = {PropertySourceBootstrapConfiguration$$EnhancerBySpringCGLIB$$56dce074@3705}
8 = {EnvironmentDecryptApplicationInitializer@3706}
9 = {BootstrapApplicationListener$DelegatingEnvironmentDecryptApplicationInitializer@3715}
如您所见,它即将在initializer 列表中添加另一个PropertySourceBootstrapConfiguration 实例。
什么可能导致这种情况,我该如何避免?
【问题讨论】:
标签: java spring spring-cloud spring-cloud-config