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

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -