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);