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