Spring cloud Ribbon:无法使用@RibbonClient设置默认配置(defaultConfiguration=…)
Spring cloud Ribbon:无法使用@RibbonClient设置默认配置(defaultConfiguration=…),spring-cloud,Spring Cloud,@RibbonClients注释允许我们定制每个客户端的功能区配置。有关此过程的说明,请参阅 这一切都很好。我尝试使用相同的方法覆盖应该应用于所有客户端的默认配置。因此,我定义了以下配置类,并确保组件扫描考虑了它: @Configuration @RibbonClients(defaultConfiguration = MyDefaultRibbonConfig.class) public class MyRibbonAutoConfiguration { } 不幸的是,在构建功能区客户端的
@RibbonClients
注释允许我们定制每个客户端的功能区配置。有关此过程的说明,请参阅
这一切都很好。我尝试使用相同的方法覆盖应该应用于所有客户端的默认配置。因此,我定义了以下配置类,并确保组件扫描考虑了它:
@Configuration
@RibbonClients(defaultConfiguration = MyDefaultRibbonConfig.class)
public class MyRibbonAutoConfiguration {
}
不幸的是,在构建功能区客户端的应用程序上下文时,没有考虑到MyDefaultRibbonConfig
。快速查看并跟踪RibbonClient配置注册器
让我认为我的@RibbonClient(默认值=…)
注释被org.springframework.cloud.netflix.ribbon.eureka.RibbonEurekaAutoConfiguration提供的注释无条件覆盖
但是,如果@RibbonClients
注释设置在内部类而不是顶级类上,则它可以工作:
@Configuration
public class MyRibbonAutoConfiguration {
@Configuration
@RibbonClients(defaultConfiguration = MyDefaultRibbonConfig.class)
static class SubConfig {
}
}
这是一个副作用,该策略遵循RibbonClient配置注册器
为发现的配置bean命名:
registerClientConfiguration(registry,
"default." + metadata.getEnclosingClassName(),
attrs.get("defaultConfiguration"));
然后,在顶级类上声明的注释的配置将使用设置为default.null.defaultConfiguration
的bean名称注册,因此下一个将覆盖上一个(但不确定顺序是否可预测)
我觉得这种行为很奇怪。我错过什么了吗?我应该采取不同的做法吗?这是SpringCloud Netflix 1.0.1中的一个问题。有关更多信息,请参阅。有关后续信息,请参阅