当我在网络上的演示中查看RibbonConfig
的实现时,我注意到他们始终使用IClientConfig
配置参数,但实际上从未使用过。例如:
@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
配置参数的用途吗?在这种情况下,该方法本身并未使用它。
答案 0 :(得分:0)
我在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用于初始化客户端或负载均衡器的客户端配置 并用于方法执行。