From 05e8777fc3e1d36120cc74d0ebab384be7af00d6 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Fri, 5 Dec 2014 15:31:40 -0700 Subject: [PATCH] add missing feign objects as not required values. Document FeignClient --- .../cloud/netflix/feign/FeignClient.java | 4 ++ .../netflix/feign/FeignConfiguration.java | 42 +++++++++++++++---- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClient.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClient.java index 9209a6d3..4e4c4568 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClient.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClient.java @@ -9,6 +9,10 @@ import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME) @Documented public @interface FeignClient { + /** + * @return serviceId if loadbalance is true, url otherwise + * No need to prefix serviceId with http:// + */ String value(); boolean loadbalance() default true; } diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignConfiguration.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignConfiguration.java index 143625ab..6dc3a40e 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignConfiguration.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignConfiguration.java @@ -1,17 +1,16 @@ package org.springframework.cloud.netflix.feign; -import feign.Client; -import feign.Contract; -import feign.Feign; -import feign.Logger; +import feign.*; import feign.codec.Decoder; import feign.codec.Encoder; +import feign.codec.ErrorDecoder; import feign.ribbon.LoadBalancingTarget; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.netflix.ribbon.RibbonClientPreprocessor; import org.springframework.context.annotation.Configuration; import org.springframework.cloud.netflix.archaius.ConfigurableEnvironmentConfiguration; +import javax.inject.Inject; import java.net.URI; /** @@ -37,15 +36,40 @@ public class FeignConfiguration { @Autowired Contract contract; + @Autowired(required = false) + Logger.Level logLevel; + + @Autowired(required = false) + Retryer retryer; + + @Autowired(required = false) + ErrorDecoder errorDecoder; + + @Autowired(required = false) + Request.Options options; + @Autowired(required = false) Client ribbonClient; protected Feign.Builder feign() { - return Feign.builder() - .logger(logger) - .encoder(encoder) - .decoder(decoder) - .contract(contract); + Feign.Builder builder = Feign.builder() + //required values + .logger(logger) + .encoder(encoder) + .decoder(decoder) + .contract(contract); + + //optional values + if (logLevel != null) + builder.logLevel(logLevel); + if (retryer != null) + builder.retryer(retryer); + if (errorDecoder != null) + builder.errorDecoder(errorDecoder); + if (options != null) + builder.options(options); + + return builder; } protected T loadBalance(Class type, String schemeName) {