Add @FeignClient(primary)

Adds the ability to turn off Spring Cloud Netflix making the feign instances as primary.

fixes gh-1016
This commit is contained in:
Spencer Gibb
2017-02-15 17:46:12 -07:00
parent 8f5e3ad7c0
commit e3341a19cd
4 changed files with 186 additions and 1 deletions

View File

@@ -1127,6 +1127,18 @@ static class HystrixClientFallbackFactory implements FallbackFactory<HystrixClie
WARNING: There is a limitation with the implementation of fallbacks in Feign and how Hystrix fallbacks work. Fallbacks are currently not supported for methods that return `com.netflix.hystrix.HystrixCommand` and `rx.Observable`.
=== Feign and `@Primary`
When using Feign with Hystrix fallbacks, there are multiple beans in the `ApplicationContext` of the same type. This will cause `@Autowired` to work because there isn't exactly one bean, or one marked as primary. To work around this, Spring Cloud Netflix marks all Feign instances as `@Primary`, so Spring Framework will know which bean to inject. In some cases, this may not be desirable. To turn off this behavior set the `primary` attribute of `@FeignClient` to false.
[source,java,indent=0]
----
@FeignClient(name = "hello", primary = false)
public interface HelloClient {
// methods here
}
----
[[spring-cloud-feign-inheritance]]
=== Feign Inheritance Support