我有一个简单的应用程序,带有spring Boot EKS with kubernetes JDK 17 spring- Boot -starter-parent 3.1.3 spring-cloud-dependencies spring-cloud-starter-kubernetes-fabric 8-config spring-cloud-starter-bootstrap
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 2 of method configMapPropertyChangeEventWatcher in org.springframework.cloud.kubernetes.fabric8.config.reload.Fabric8ConfigReloadAutoConfiguration required a single bean,
but 2 were found:
- configDataConfigMapPropertySourceLocator: a programmatically registered singleton
- configMapPropertySourceLocator: defined by method 'configMapPropertySourceLocator'
in class path resource [org/springframework/cloud/kubernetes/fabric8/config/Fabric8BootstrapConfiguration.class]
Action:
Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumed
","context":"default"}
字符串
bootstrap.properties:
spring.cloud.bootstrap.enabled=true
spring.main.cloud-platform=KUBERNETES
spring.cloud.kubernetes.discovery.enabled=false
spring.cloud.kubernetes.config.enabled=true
spring.cloud.kubernetes.reload.enabled=true
spring.cloud.kubernetes.secrets.enabled=true
spring.cloud.kubernetes.reload.monitoring-secrets=true
型
application.properties
spring.application.name=demo
spring.main.allow-bean-definition-overriding=true
spring.cloud.bootstrap.enabled=true
spring.main.cloud-platform=KUBERNETES
型
有人知道我错过了什么吗?
2条答案
按热度按时间iswrvxsc1#
spring-cloud-kubernetes
贡献者您同时使用 * 配置数据API和 Bootstrap ,因此创建了2个bean,而预期只有一个。
我的意思是,你有:
application.properties
中的spring.config.import:kubernetes
(这被称为“配置数据API”,是“ Bootstrap ”的现代替代品,更多细节请参见this)与此同时,您还启用了引导:您在类路径上设置了
spring-cloud-starter-bootstrap
,或者设置为:spring.cloud.bootstrap.enabled=true
。因为这两个都配置了,所以每个都会创建一个
@Bean
,但是我们只需要一个。所以禁用其中一个。nhaq1z212#
在我的情况下,这并不像@尤金建议的那样简单,除非我还缺少一些东西。
我从我的应用程序中删除了
bootstrap.properties
文件,并替换为application.properties
文件,遵循所谓的“配置数据API”,然后我在这里描述的问题中结束,我也在Spring application fails to start because Fabric8ConfigReloadAutoConfiguration required a single bean but 2 were found中报告了这个问题。然后我发出了上面的问题,最后我在这个问题中结束了。根据@尤金的建议,我意识到我的项目中用于管理依赖关系的pom包含
spring-cloud-starter-bootstrap
,所以我从我的应用程序中排除了它。然后我有一个新的问题:字符串
当然,我已经检查过,我没有任何其他属性激活 Bootstrap 。所以似乎我不能那么容易摆脱
spring-cloud-starter-bootstrap
。我会编辑这个答案,以防我有新的发现,他们可以任何帮助。