当我在Web演示中查看RibbonConfig
的实现时,我注意到他们总是使用IClientConfig
config参数,但是他们从未真正使用过它。例如:
@Autowired
IClientConfig ribbonClientConfig;
@Bean
public IRule ribbonRule(IClientConfig config) { // This parameter is never used
return new AvailabilityFilteringRule();
}
@Bean
public IPing ribbonPing(IClientConfig config) {
return new DummyPing();
}
你们知道
IClientConfig
配置参数用于什么吗?在这种情况下,该方法本身未使用它。 最佳答案
我在Moises Macero的书中找到了一个非常相似的示例:使用Spring Boot学习微服务,一种实用的RESTful方法...例如:
public class RibbonConfiguration {
@Bean
public IPing ribbonPing(IClientConfig config) {
return new PingUrl(false, "/health");
}
@Bean
public IRule ribbonRule(IClientConfig config) {
return new AvailabilityFilteringRule();
}}
此配置的范围正在更改默认的功能区负载平衡策略。
此外,我在官方文档中发现了这一点:
@Configuration
class DefaultRibbonConfig {
@Bean
public IRule ribbonRule() {
return new BestAvailableRule();
}
@Bean
public IPing ribbonPing() {
return new PingUrl();
}
@Bean
public ServerList<Server> ribbonServerList(IClientConfig config) {
return new RibbonClientDefaultConfigurationTestsConfig.BazServiceList(config);
}
@Bean
public ServerListSubsetFilter serverListFilter() {
ServerListSubsetFilter filter = new ServerListSubsetFilter();
return filter;
}
}
如您所见,前两种方法没有IClientConfig参数,此处为官方文档:
Customizing the Default for All Ribbon Clients
因此,我返回到配置文件,并删除了IClientConfig参数,该程序仍然有效。
我认为IClientConfig在这一刻是没有用的。
但是您可以参考IClientConfig作者的评论:IClientConfig
定义各种API用于初始化客户端或负载均衡器的客户端配置
和方法执行。