package org.fool.feign.client; import org.fool.feign.config.FeignConfiguration; import org.fool.feign.contract.request.DemoRequest; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import java.net.URI; @FeignClient(name = "ORDER-SERVICE", url = "url-placeholder", fallbackFactory = OrderClient.OrderClientFallbackFactory.class, configuration = FeignConfiguration.class) public interface OrderClient { @PostMapping(value = "/demo") String queryOrder(URI uri, @RequestBody DemoRequest orderRequest); @Component class OrderClientFallbackFactory extends AbstractFallbackFactory<OrderClient> { @Override public OrderClient create(Throwable throwable) { return new OrderClient() { @Override public String queryOrder(URI uri, DemoRequest orderRequest) { String message = "failed to query_order with " + orderRequest + " url: " + uri.toString(); return handleExceptions(throwable, message); } }; } } }