DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Newsletter
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Related

  • Distributed Tracing System (Spring Cloud Sleuth + OpenZipkin)
  • Component Tests for Spring Cloud Microservices
  • A Robust Distributed Payment Network With Enchanted Audit Functionality - Part 2: Spring Boot, Axon, and Implementation
  • 7 Microservices Best Practices for Developers

Trending

  • MQTT, Kafka, NATS, or Zenoh? Choosing Edge-to-Cloud Messaging by Traffic Pattern
  • Architecture Review Boards for Generative AI: A Framework for Governance, Risk Management, and Responsible Adoption
  • New York City Taxi Trips: Putting Neo4j and DuckDB to Work
  • When a Coding Agent Fixes the Test Instead of the Bug

Draft This article hasn't been published, so readers can't see it.

In moderation This article is waiting for review, so readers can't see it yet.

Deleted This article has been deleted, so readers can't see it.

  1. DZone
  2. Software Design and Architecture
  3. Cloud Architecture
  4. Manual Creation of Feign Clients in Spring Cloud

Manual Creation of Feign Clients in Spring Cloud

Learn about the process behind manually building Feign clients to operate in the Spring Cloud framework.

By 
Ryan Baxter
·
Nov. 20, 16 · Tutorial
Post on X (opens in a new tab) Share on LinkedIn (opens in a new tab)
18.2K Views

Join the DZone community Save articles, join the discussion, and download Refcards and Trend Reports with a free account.

Join for free Already a member? Log in
If you want something done right, you have to do it yourself

Have you ever heard the saying above? Sometimes it is true even when writing code.

While Spring Cloud makes it extremely easy to create Feign Clients with its use of annotations, sometimes you just have to bite the bullet and create them yourselves. I would say the 90% of the time, the combination of annotations and custom configuration will be good enough for most use cases. Sometimes, however, you run into use cases where that just won’t do. In these cases it would be good to have full control over how you create your Feign clients.

Recently I added some documentation to the Spring Cloud docs that demonstrates exactly how you would do this. Essentially you use the same APIs as you would if you were just using vanilla Feign. Below is the example taken from the Spring Cloud docs.

@Import(FeignClientsConfiguration.class) 
class FooController { 
  private FooClient fooClient; 
  private FooClient adminClient; 

  @Autowired public FooController( ResponseEntityDecoder decoder, SpringEncoder encoder, Client client) { 
    this.fooClient = Feign.builder().client(client) 
      .encoder(encoder) 
      .decoder(decoder) 
      .requestInterceptor(new BasicAuthRequestInterceptor("user", "user")) 
      .target(FooClient.class, "http://PROD-SVC"); 

    this.adminClient = Feign.builder().client(client) 
      .encoder(encoder) 
      .decoder(decoder) 
      .requestInterceptor(new BasicAuthRequestInterceptor("admin", "admin")) 
      .target(FooClient.class, "http://PROD-SVC"); 
  } 
} 

In this example, we are creating two Feign Clients from the same interface, FooClient.class, which are using two different request interceptors. Doing this with the @FeignClient annotation plus configuration would not be possible, so in this case, we need to create the clients using the Feign APIs.

For a more in-depth look at the code, check out this GitHub repo.

Spring Cloud Spring Framework

Published at DZone with permission of Ryan Baxter. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • Distributed Tracing System (Spring Cloud Sleuth + OpenZipkin)
  • Component Tests for Spring Cloud Microservices
  • A Robust Distributed Payment Network With Enchanted Audit Functionality - Part 2: Spring Boot, Axon, and Implementation
  • 7 Microservices Best Practices for Developers

Partner Resources

×

Comments

Loading comments

The comments didn't load

Please try again in a moment.

Likes

Loading

The next likes didn't load. Please try again.

The likes didn't load

Please try again in a moment.

See who liked this

Log in or join DZone for free to see who liked this article.

Log in Join for free
  • RSS
  • X
  • Facebook

ABOUT US

  • About DZone
  • Support and feedback
  • Community research

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 215
  • Nashville, TN 37211
  • [email protected]

Let's be friends:

  • RSS
  • X
  • Facebook