spring cloud - Ribbon: Unable to set default configuration using @RibbonClients(defaultConfiguration=...) -
the @ribbonclients
annotation allows customise ribbon configuration per client. process described in documentation @ http://projects.spring.io/spring-cloud/spring-cloud.html#_customizing_the_ribbon_client
this fine. tried use same approach override default configuration should applied clients. defined following configuration class , made sure considered component scan:
@configuration @ribbonclients(defaultconfiguration = mydefaultribbonconfig.class) public class myribbonautoconfiguration { }
unfortunately, turns out mydefaultribbonconfig
not taken account when building ribbon client's application context. quick , trace @ ribbonclientconfigurationregistrar
let me think @ribbonclients(default=...)
annotation unconditionally overridden 1 provided org.springframework.cloud.netflix.ribbon.eureka.ribboneurekaautoconfiguration
.
however, works if @ribbonclients
annotation set on inner class instead of top-level class:
@configuration public class myribbonautoconfiguration { @configuration @ribbonclients(defaultconfiguration = mydefaultribbonconfig.class) static class subconfig { } }
this side-effect strategy followed ribbonclientconfigurationregistrar
give name discovered configuration beans:
registerclientconfiguration(registry, "default." + metadata.getenclosingclassname(), attrs.get("defaultconfiguration"));
the configuration annotations declared on top-level class registered bean name set default.null.defaultconfiguration
- next 1 overrides previous (not sure order predictable though).
this behaviour looks strange me. did miss something? should proceed differently?
this issue in springcloud-netflix 1.0.1. see https://github.com/spring-cloud/spring-cloud-netflix/issues/374 more information.
Comments
Post a Comment