diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientsRegistrar.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientsRegistrar.java index 3501b30d..cd111ed3 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientsRegistrar.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientsRegistrar.java @@ -40,6 +40,7 @@ import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.ResourceLoaderAware; import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; +import org.springframework.core.annotation.AnnotationAttributes; import org.springframework.core.io.ResourceLoader; import org.springframework.core.type.AnnotationMetadata; import org.springframework.core.type.ClassMetadata; @@ -154,6 +155,8 @@ class FeignClientsRegistrar implements ImportBeanDefinitionRegistrar, Map attributes = annotationMetadata .getAnnotationAttributes( FeignClient.class.getCanonicalName()); + // Spring 4.2 didn't do this for us. With 4.3 it's idempotent. + attributes = AnnotationAttributes.fromMap(attributes); String name = getClientName(attributes); registerClientConfiguration(registry, name, @@ -193,10 +196,6 @@ class FeignClientsRegistrar implements ImportBeanDefinitionRegistrar, Assert.isTrue(!StringUtils.hasText((String) attributes.get("serviceId")), "Either name (serviceId) or value can be specified, but not both"); } - if (StringUtils.hasText((String) attributes.get("name"))) { - Assert.isTrue(!StringUtils.hasText((String) attributes.get("serviceId")), - "Either name or serviceId can be specified, but not both"); - } } private String getName(Map attributes) {