diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientScan.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/EnableFeignClients.java
similarity index 95%
rename from spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientScan.java
rename to spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/EnableFeignClients.java
index 74b485fe9..6332a49ed 100644
--- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientScan.java
+++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/EnableFeignClients.java
@@ -37,8 +37,8 @@ import org.springframework.context.annotation.Import;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
-@Import(FeignClientScanRegistrar.class)
-public @interface FeignClientScan {
+@Import({ FeignClientsConfiguration.class, FeignClientsRegistrar.class })
+public @interface EnableFeignClients {
/**
* Alias for the {@link #basePackages()} attribute. Allows for more concise annotation
diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignAutoConfiguration.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignAutoConfiguration.java
index 34118b97d..088c433e2 100644
--- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignAutoConfiguration.java
+++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignAutoConfiguration.java
@@ -16,7 +16,6 @@
package org.springframework.cloud.netflix.feign;
-import feign.slf4j.Slf4jLogger;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.cloud.netflix.archaius.ArchaiusAutoConfiguration;
@@ -28,9 +27,7 @@ import org.springframework.context.annotation.Configuration;
import com.netflix.loadbalancer.ILoadBalancer;
import feign.Client;
-import feign.Contract;
import feign.Feign;
-import feign.Logger;
/**
* @author Spencer Gibb
@@ -39,28 +36,9 @@ import feign.Logger;
@Configuration
@ConditionalOnClass(Feign.class)
@AutoConfigureAfter(ArchaiusAutoConfiguration.class)
+@EnableFeignClients
public class FeignAutoConfiguration {
- @Bean
- public SpringDecoder feignDecoder() {
- return new SpringDecoder();
- }
-
- @Bean
- public SpringEncoder feignEncoder() {
- return new SpringEncoder();
- }
-
- @Bean
- public Logger feignLogger() {
- return new Slf4jLogger();
- }
-
- @Bean
- public Contract feignContract() {
- return new SpringMvcContract();
- }
-
@ConditionalOnClass(ILoadBalancer.class)
@Configuration
protected static class RibbonClientConfiguration {
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 8daa1b04e..e8d02c261 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
@@ -24,7 +24,10 @@ import java.lang.annotation.Target;
/**
* Annotation for interfaces declaring that a REST client with that interface should be
- * created (e.g. for autowiring into another component).
+ * created (e.g. for autowiring into another component). If ribbon is available it will be
+ * used to load balance the backend requests, and the load balancer can be configured
+ * using a @RibbonClient with the same name (i.e. value) as the feign client.
+ *
* @author Spencer Gibb
*/
@Target(ElementType.TYPE)
@@ -33,14 +36,15 @@ import java.lang.annotation.Target;
public @interface FeignClient {
/**
- * @return serviceId if loadbalance is true, url otherwise There is no need to prefix
- * serviceId with http://.
+ * The serviceId if loadbalance is true, or an absolute URL otherwise There is no need
+ * to prefix serviceId with http://.
*/
String value();
/**
- * @return true if calls should be load balanced (assuming a load balancer is
- * available).
+ * Set to true if calls should be load balanced (assuming a load balancer is
+ * available). If no load balancer is available this flag is ignored (and hence the
+ * {@link #value() value} should be an absolute URL).
*/
boolean loadbalance() default true;
diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientFactoryBean.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientFactoryBean.java
index 5a2da27ad..1731f3d25 100644
--- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientFactoryBean.java
+++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/feign/FeignClientFactoryBean.java
@@ -106,10 +106,6 @@ class FeignClientFactoryBean implements FactoryBean