Search code examples
spring-bootfeign

How to define global static header on Spring Boot Feign Client


I have a spring boot app and want to create a Feign client which has a statically defined header value (for auth, but not basic auth). I found the @Headers annotation but it doesn't seem to work in the realm of Spring Boot. My suspicion is this has something to do with it using the SpringMvcContract.

Here's the code I want to work:

@FeignClient(name = "foo", url = "http://localhost:4444/feign")
@Headers({"myHeader:value"})
public interface LocalhostClient {

But it does not add the headers.

I made a clean spring boot app with my attempts and posted to github here: github example

The only way I was able to make it work was to define the RequestInterceptor as a global bean, but I don't want to do that because it would impact other clients.


Solution

  • You can also achieve this by adding header to individual methods as follows:

    @RequestMapping(method = RequestMethod.GET, path = "/resource", headers = {"myHeader=value"})
    

    Using @Headers with dynamic values in Feign client + Spring Cloud (Brixton RC2) discusses a solution for dynamic values using @RequestHeader.