diff --git a/pom.xml b/pom.xml index 433be07c..190613f6 100644 --- a/pom.xml +++ b/pom.xml @@ -71,10 +71,10 @@ 1.8 - - org.apache.maven.plugins - maven-checkstyle-plugin - + + + + io.spring.javaformat spring-javaformat-maven-plugin @@ -91,14 +91,14 @@ - - - - org.apache.maven.plugins - maven-checkstyle-plugin - - - + + + + + + + + diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java index 6bf5f57d..e130b92a 100644 --- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java +++ b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java @@ -15,7 +15,7 @@ */ package org.springframework.cloud.openfeign.loadbalancer; - +// comment-by-kai 源码阅读 spring cloud 2021.x import java.io.IOException; import java.net.URI; import java.nio.charset.StandardCharsets; @@ -94,6 +94,8 @@ public class FeignBlockingLoadBalancerClient implements Client { loadBalancerClientFactory.getInstances(serviceId, LoadBalancerLifecycle.class), RequestDataContext.class, ResponseData.class, ServiceInstance.class); supportedLifecycleProcessors.forEach(lifecycle -> lifecycle.onStart(lbRequest)); + + // loadBalancerClient根据serviceId,选择合适的ServiceInstance ServiceInstance instance = loadBalancerClient.choose(serviceId, lbRequest); org.springframework.cloud.client.loadbalancer.Response lbResponse = new DefaultResponse( instance); @@ -108,6 +110,8 @@ public class FeignBlockingLoadBalancerClient implements Client { return Response.builder().request(request).status(HttpStatus.SERVICE_UNAVAILABLE.value()) .body(message, StandardCharsets.UTF_8).build(); } + + // 重构URL,替换serviceId为实际的通信地址 String reconstructedUrl = loadBalancerClient.reconstructURI(instance, originalUri).toString(); Request newRequest = buildRequest(request, reconstructedUrl); LoadBalancerProperties loadBalancerProperties = loadBalancerClientFactory.getProperties(serviceId);