This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git


The following commit(s) were added to refs/heads/master by this push:
     new 916a84d1d [SCB-2359]Implements RestOperations instead of RestTemplate 
(#3992)
916a84d1d is described below

commit 916a84d1de6ecdf7125778ba2089ec3bd9905107
Author: liubao68 <bi...@qq.com>
AuthorDate: Mon Oct 23 20:19:01 2023 +0800

    [SCB-2359]Implements RestOperations instead of RestTemplate (#3992)
---
 .../servicecomb/demo/crossapp/CrossappClient.java  |  5 ++-
 .../servicecomb/samples/ConsumerConfigIT.java      |  3 +-
 .../apache/servicecomb/samples/HelloWorldIT.java   |  3 +-
 .../servicecomb/samples/ConsumerConfigIT.java      |  3 +-
 .../apache/servicecomb/samples/HelloWorldIT.java   |  3 +-
 .../servicecomb/demo/edge/consumer/Consumer.java   |  4 +-
 .../edge/consumer/EdgeServiceGovernanceTest.java   |  4 +-
 .../demo/filter/client/ClientExceptionSchema.java  |  4 +-
 .../demo/filter/client/RetryClientSchema.java      |  4 +-
 .../tests/TestExceptionSchemaFromClient.java       |  4 +-
 .../filter/tests/TestRetrySchemaFromClient.java    |  4 +-
 .../demo/filter/tests/TestRetrySchemaFromEdge.java |  3 +-
 .../apache/servicecomb/demo/jaxrs/JaxrsClient.java | 44 +++++++++++-----------
 .../jaxrs/client/CodeFirstRestTemplateJaxrs.java   | 10 ++---
 .../jaxrs/client/MultiErrorCodeServiceClient.java  |  4 +-
 .../demo/jaxrs/client/TestClientTimeout.java       | 10 ++---
 .../demo/jaxrs/client/TestFileUploadSchema.java    |  8 ++--
 .../demo/jaxrs/client/TestFormRequestSchema.java   |  4 +-
 .../demo/jaxrs/client/TestQueryParamSchema.java    |  4 +-
 .../jaxrs/client/TestQueryParamWithListSchema.java |  4 +-
 .../demo/jaxrs/client/TestReactiveSchema.java      |  4 +-
 .../beanParam/BeanParamRestTemplateClient.java     | 13 ++++---
 .../client/injectBean/TestInjectBeanSchema.java    |  4 +-
 .../pojoDefault/DefaultModelServiceClient.java     |  4 +-
 .../client/validation/ValidationServiceClient.java |  4 +-
 .../demo/jaxrs/server/ReactiveSchema.java          | 10 ++---
 .../LocalRegistryServerTest.java                   |  4 +-
 .../registry/MultiRegistriesServerTestCase.java    |  4 +-
 .../apache/servicecomb/samples/HelloWorldIT.java   |  3 +-
 .../servicecomb/demo/prefix/Application.java       |  4 +-
 .../servicecomb/demo/CodeFirstRestTemplate.java    | 44 +++++++++++-----------
 .../springmvc/client/PlaceHolderSchemaTest.java    |  4 +-
 .../demo/springmvc/SpringmvcClient.java            |  3 +-
 .../client/CodeFirstRestTemplateSpringmvc.java     | 20 +++++-----
 .../demo/springmvc/client/TestContentType.java     |  4 +-
 .../demo/springmvc/client/TestControllerImpl.java  |  4 +-
 .../demo/springmvc/client/TestDateTimeSchema.java  |  4 +-
 .../demo/springmvc/client/TestDownloadSchema.java  | 19 +++++-----
 .../demo/springmvc/client/TestGeneric.java         |  6 +--
 .../client/TestInvokeWhenServerNotReady.java       |  4 +-
 .../springmvc/client/TestMaxHttpUrlLength.java     |  4 +-
 .../demo/springmvc/client/TestObject.java          |  6 +--
 .../demo/springmvc/client/TestRestTemplate.java    |  4 +-
 .../demo/springmvc/client/TestRetrySchema.java     |  4 +-
 .../demo/springmvc/client/TestUploadSchema.java    | 10 ++---
 .../demo/springmvc/client/TestWeakSpringmvc.java   |  4 +-
 .../demo/zeroconfig/client/GovernanceEndpoint.java |  8 ++--
 .../demo/zeroconfig/tests/GovernanceTest.java      |  4 +-
 .../demo/zeroconfig/tests/ServerTest.java          |  4 +-
 .../springmvc/reference/RestTemplateBuilder.java   |  4 +-
 .../springmvc/reference/RestTemplateWrapper.java   |  3 +-
 .../reference/ServiceCombRestTemplateConfig.java   |  4 +-
 .../ServiceCombRestTemplateConfigTest.java         |  4 +-
 .../reference/TestRestTemplateBuilder.java         |  4 +-
 54 files changed, 188 insertions(+), 177 deletions(-)

diff --git 
a/demo/demo-crossapp/crossapp-client/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappClient.java
 
b/demo/demo-crossapp/crossapp-client/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappClient.java
index 25772d294..cfdaec541 100644
--- 
a/demo/demo-crossapp/crossapp-client/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappClient.java
+++ 
b/demo/demo-crossapp/crossapp-client/src/main/java/org/apache/servicecomb/demo/crossapp/CrossappClient.java
@@ -32,6 +32,7 @@ import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestOperations;
 import org.springframework.web.client.RestTemplate;
 
 @SpringBootApplication
@@ -52,7 +53,7 @@ public class CrossappClient {
         "sayHello", null, String.class);
     TestMgr.check("hello world", result);
 
-    RestTemplate restTemplate = RestTemplateBuilder.create();
+    RestOperations restTemplate = RestTemplateBuilder.create();
     result = 
restTemplate.getForObject("cse://appServer:appService/helloworld/hello", 
String.class);
     TestMgr.check("hello world", result);
     result = 
restTemplate.getForObject("servicecomb://appServer:appService/helloworld/hello",
 String.class);
@@ -68,7 +69,7 @@ public class CrossappClient {
   }
 
   private static void testCorsHandler() {
-    RestTemplate springRestTemplate = new RestTemplate();
+    RestOperations springRestTemplate = new RestTemplate();
     MultiValueMap<String, String> requestHeaders = new LinkedMultiValueMap<>();
     requestHeaders.put("Origin", 
Collections.singletonList("http://localhost:8080";));
     requestHeaders.put("Access-Control-Request-Method", 
Collections.singletonList("PUT"));
diff --git 
a/demo/demo-cse-v1/test-client/src/main/java/org/apache/servicecomb/samples/ConsumerConfigIT.java
 
b/demo/demo-cse-v1/test-client/src/main/java/org/apache/servicecomb/samples/ConsumerConfigIT.java
index 30200b651..64cc9cc30 100644
--- 
a/demo/demo-cse-v1/test-client/src/main/java/org/apache/servicecomb/samples/ConsumerConfigIT.java
+++ 
b/demo/demo-cse-v1/test-client/src/main/java/org/apache/servicecomb/samples/ConsumerConfigIT.java
@@ -22,11 +22,12 @@ import java.util.List;
 import org.apache.servicecomb.demo.CategorizedTestCase;
 import org.apache.servicecomb.demo.TestMgr;
 import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestOperations;
 import org.springframework.web.client.RestTemplate;
 
 @Component
 public class ConsumerConfigIT implements CategorizedTestCase {
-  RestTemplate template = new RestTemplate();
+  RestOperations template = new RestTemplate();
 
   @Override
   public void testRestTransport() throws Exception {
diff --git 
a/demo/demo-cse-v1/test-client/src/main/java/org/apache/servicecomb/samples/HelloWorldIT.java
 
b/demo/demo-cse-v1/test-client/src/main/java/org/apache/servicecomb/samples/HelloWorldIT.java
index 124df7712..f744d4bca 100644
--- 
a/demo/demo-cse-v1/test-client/src/main/java/org/apache/servicecomb/samples/HelloWorldIT.java
+++ 
b/demo/demo-cse-v1/test-client/src/main/java/org/apache/servicecomb/samples/HelloWorldIT.java
@@ -24,12 +24,13 @@ import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.stereotype.Component;
 import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestOperations;
 import org.springframework.web.client.RestTemplate;
 
 
 @Component
 public class HelloWorldIT implements CategorizedTestCase {
-  RestTemplate template = new RestTemplate();
+  RestOperations template = new RestTemplate();
 
   @Override
   public void testRestTransport() throws Exception {
diff --git 
a/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/ConsumerConfigIT.java
 
b/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/ConsumerConfigIT.java
index f25980d47..3e10063a5 100644
--- 
a/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/ConsumerConfigIT.java
+++ 
b/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/ConsumerConfigIT.java
@@ -20,11 +20,12 @@ package org.apache.servicecomb.samples;
 import org.apache.servicecomb.demo.CategorizedTestCase;
 import org.apache.servicecomb.demo.TestMgr;
 import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestOperations;
 import org.springframework.web.client.RestTemplate;
 
 @Component
 public class ConsumerConfigIT implements CategorizedTestCase {
-  RestTemplate template = new RestTemplate();
+  RestOperations template = new RestTemplate();
 
   @Override
   public void testRestTransport() throws Exception {
diff --git 
a/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/HelloWorldIT.java
 
b/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/HelloWorldIT.java
index bce145686..e667095b5 100644
--- 
a/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/HelloWorldIT.java
+++ 
b/demo/demo-cse-v2/test-client/src/main/java/org/apache/servicecomb/samples/HelloWorldIT.java
@@ -20,11 +20,12 @@ package org.apache.servicecomb.samples;
 import org.apache.servicecomb.demo.CategorizedTestCase;
 import org.apache.servicecomb.demo.TestMgr;
 import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestOperations;
 import org.springframework.web.client.RestTemplate;
 
 @Component
 public class HelloWorldIT implements CategorizedTestCase {
-  RestTemplate template = new RestTemplate();
+  RestOperations template = new RestTemplate();
 
   @Override
   public void testRestTransport() throws Exception {
diff --git 
a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java
 
b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java
index 43cab7bee..9fea0a266 100644
--- 
a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java
+++ 
b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/Consumer.java
@@ -47,10 +47,10 @@ import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.HttpClientErrorException;
 import org.springframework.web.client.HttpServerErrorException;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 public class Consumer {
-  RestTemplate template = RestTemplateBuilder.create();
+  RestOperations template = RestTemplateBuilder.create();
 
   ChannelRequestBase request = new ChannelRequestBase();
 
diff --git 
a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/EdgeServiceGovernanceTest.java
 
b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/EdgeServiceGovernanceTest.java
index 3f9062a0f..613ba8a02 100644
--- 
a/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/EdgeServiceGovernanceTest.java
+++ 
b/demo/demo-edge/consumer/src/main/java/org/apache/servicecomb/demo/edge/consumer/EdgeServiceGovernanceTest.java
@@ -32,11 +32,11 @@ import 
org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.HttpServerErrorException;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class EdgeServiceGovernanceTest implements CategorizedTestCase {
-  RestTemplate template = RestTemplateBuilder.create();
+  RestOperations template = RestTemplateBuilder.create();
 
   String edgePrefix;
 
diff --git 
a/demo/demo-filter/filter-client/src/main/java/org/apache/servicecomb/demo/filter/client/ClientExceptionSchema.java
 
b/demo/demo-filter/filter-client/src/main/java/org/apache/servicecomb/demo/filter/client/ClientExceptionSchema.java
index 55065d5fb..387d2c25d 100644
--- 
a/demo/demo-filter/filter-client/src/main/java/org/apache/servicecomb/demo/filter/client/ClientExceptionSchema.java
+++ 
b/demo/demo-filter/filter-client/src/main/java/org/apache/servicecomb/demo/filter/client/ClientExceptionSchema.java
@@ -25,7 +25,7 @@ import 
org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @RestSchema(schemaId = "ClientExceptionSchema")
 @RequestMapping(path = "/exception", produces = 
MediaType.APPLICATION_JSON_VALUE)
@@ -38,7 +38,7 @@ public class ClientExceptionSchema {
 
   private IExceptionSchema exceptionSchema;
 
-  private RestTemplate restTemplate = RestTemplateBuilder.create();
+  private RestOperations restTemplate = RestTemplateBuilder.create();
 
   @RpcReference(microserviceName = "filterServer", schemaId = 
"ExceptionSchema")
   public void setExceptionSchema(IExceptionSchema exceptionSchema) {
diff --git 
a/demo/demo-filter/filter-client/src/main/java/org/apache/servicecomb/demo/filter/client/RetryClientSchema.java
 
b/demo/demo-filter/filter-client/src/main/java/org/apache/servicecomb/demo/filter/client/RetryClientSchema.java
index fd2ab36cd..e101db5a8 100644
--- 
a/demo/demo-filter/filter-client/src/main/java/org/apache/servicecomb/demo/filter/client/RetryClientSchema.java
+++ 
b/demo/demo-filter/filter-client/src/main/java/org/apache/servicecomb/demo/filter/client/RetryClientSchema.java
@@ -24,7 +24,7 @@ import 
org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @RestSchema(schemaId = "RetryClientSchema")
 @RequestMapping(path = "/retry", produces = MediaType.APPLICATION_JSON_VALUE)
@@ -36,7 +36,7 @@ public class RetryClientSchema {
   @RpcReference(microserviceName = "filterServer", schemaId = "RetrySchema")
   private RetrySchemaInf retrySchemaInf;
 
-  RestTemplate restTemplate = RestTemplateBuilder.create();
+  RestOperations restTemplate = RestTemplateBuilder.create();
 
   @GetMapping(path = "/governance/successWhenRetry")
   public boolean successWhenRetry() {
diff --git 
a/demo/demo-filter/filter-tests/src/main/java/org/apache/servicecomb/demo/filter/tests/TestExceptionSchemaFromClient.java
 
b/demo/demo-filter/filter-tests/src/main/java/org/apache/servicecomb/demo/filter/tests/TestExceptionSchemaFromClient.java
index 9287f698b..9f9a211a3 100644
--- 
a/demo/demo-filter/filter-tests/src/main/java/org/apache/servicecomb/demo/filter/tests/TestExceptionSchemaFromClient.java
+++ 
b/demo/demo-filter/filter-tests/src/main/java/org/apache/servicecomb/demo/filter/tests/TestExceptionSchemaFromClient.java
@@ -22,12 +22,12 @@ import 
org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class TestExceptionSchemaFromClient implements CategorizedTestCase {
 
-  RestTemplate restTemplate = RestTemplateBuilder.create();
+  RestOperations restTemplate = RestTemplateBuilder.create();
 
   private static final String SERVER = "servicecomb://filterClient";
 
diff --git 
a/demo/demo-filter/filter-tests/src/main/java/org/apache/servicecomb/demo/filter/tests/TestRetrySchemaFromClient.java
 
b/demo/demo-filter/filter-tests/src/main/java/org/apache/servicecomb/demo/filter/tests/TestRetrySchemaFromClient.java
index c4f7c723c..dea3fe8e9 100644
--- 
a/demo/demo-filter/filter-tests/src/main/java/org/apache/servicecomb/demo/filter/tests/TestRetrySchemaFromClient.java
+++ 
b/demo/demo-filter/filter-tests/src/main/java/org/apache/servicecomb/demo/filter/tests/TestRetrySchemaFromClient.java
@@ -23,7 +23,7 @@ import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.provider.pojo.RpcReference;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class TestRetrySchemaFromClient implements CategorizedTestCase {
@@ -36,7 +36,7 @@ public class TestRetrySchemaFromClient implements 
CategorizedTestCase {
   @RpcReference(microserviceName = "filterClient", schemaId = 
"RetryClientSchema")
   private RetrySchemaInf retrySchemaInf;
 
-  RestTemplate restTemplate = RestTemplateBuilder.create();
+  RestOperations restTemplate = RestTemplateBuilder.create();
 
   private static final String SERVER = "servicecomb://filterClient";
 
diff --git 
a/demo/demo-filter/filter-tests/src/main/java/org/apache/servicecomb/demo/filter/tests/TestRetrySchemaFromEdge.java
 
b/demo/demo-filter/filter-tests/src/main/java/org/apache/servicecomb/demo/filter/tests/TestRetrySchemaFromEdge.java
index e98171e15..422297296 100644
--- 
a/demo/demo-filter/filter-tests/src/main/java/org/apache/servicecomb/demo/filter/tests/TestRetrySchemaFromEdge.java
+++ 
b/demo/demo-filter/filter-tests/src/main/java/org/apache/servicecomb/demo/filter/tests/TestRetrySchemaFromEdge.java
@@ -23,6 +23,7 @@ import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.provider.pojo.RpcReference;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestOperations;
 import org.springframework.web.client.RestTemplate;
 
 @Component
@@ -36,7 +37,7 @@ public class TestRetrySchemaFromEdge implements 
CategorizedTestCase {
   @RpcReference(microserviceName = "filterEdge", schemaId = 
"RetryClientSchema")
   private RetrySchemaInf retrySchemaInf;
 
-  RestTemplate restTemplate = RestTemplateBuilder.create();
+  RestOperations restTemplate = RestTemplateBuilder.create();
 
   RestTemplate springRestTemplate = new RestTemplate();
 
diff --git 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/JaxrsClient.java
 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/JaxrsClient.java
index 4d23e6d42..853b29232 100644
--- 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/JaxrsClient.java
+++ 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/JaxrsClient.java
@@ -50,7 +50,7 @@ import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response.Status;
@@ -59,7 +59,7 @@ import jakarta.ws.rs.core.Response.Status;
 public class JaxrsClient {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(JaxrsClient.class);
 
-  private static RestTemplate templateNew = RestTemplateBuilder.create();
+  private static RestOperations templateNew = RestTemplateBuilder.create();
 
   public static void main(String[] args) throws Exception {
     new 
SpringApplicationBuilder(JaxrsClient.class).web(WebApplicationType.NONE).run(args);
@@ -100,7 +100,7 @@ public class JaxrsClient {
     testOnlyRest(templateNew);
   }
 
-  private static void testOnlyRest(RestTemplate template) {
+  private static void testOnlyRest(RestOperations template) {
     String microserviceName = "jaxrs";
     String cseUrlPrefix = "cse://" + microserviceName;
     InMemoryDynamicPropertiesSource.update("servicecomb.references.transport." 
+ microserviceName, "rest");
@@ -109,7 +109,7 @@ public class JaxrsClient {
     testSpringMvcDefaultValuesJavaPrimitiveRest(templateNew);
   }
 
-  private static void testCompute(RestTemplate template) throws Exception {
+  private static void testCompute(RestOperations template) throws Exception {
     String microserviceName = "jaxrs";
     for (String transport : DemoConst.transports) {
       
InMemoryDynamicPropertiesSource.update("servicecomb.references.transport." + 
microserviceName, transport);
@@ -126,7 +126,7 @@ public class JaxrsClient {
     }
   }
 
-  private static void testValidator(RestTemplate template) {
+  private static void testValidator(RestOperations template) {
     String microserviceName = "jaxrs";
     for (String transport : DemoConst.transports) {
       
InMemoryDynamicPropertiesSource.update("servicecomb.references.transport." + 
microserviceName, transport);
@@ -150,7 +150,7 @@ public class JaxrsClient {
     }
   }
 
-  private static void testJaxRSDefaultValuesRest(RestTemplate template) {
+  private static void testJaxRSDefaultValuesRest(RestOperations template) {
     String result;
     String microserviceName = "jaxrs";
     String cseUrlPrefix = "cse://" + microserviceName + "/JaxRSDefaultValues/";
@@ -193,7 +193,7 @@ public class JaxrsClient {
     TestMgr.check(failed, true);
   }
 
-  private static void testJaxRSDefaultValuesAllTransport(RestTemplate 
template) {
+  private static void testJaxRSDefaultValuesAllTransport(RestOperations 
template) {
     String microserviceName = "jaxrs";
     for (String transport : DemoConst.transports) {
       
InMemoryDynamicPropertiesSource.update("servicecomb.references.transport." + 
microserviceName, transport);
@@ -288,7 +288,7 @@ public class JaxrsClient {
     }
   }
 
-  private static void testGetRest(RestTemplate template, String cseUrlPrefix) {
+  private static void testGetRest(RestOperations template, String 
cseUrlPrefix) {
     Map<String, String> params = new HashMap<>();
     params.put("a", "5");
     params.put("b", "3");
@@ -304,7 +304,7 @@ public class JaxrsClient {
     TestMgr.check(-1, result);
   }
 
-  private static void testGetAllTransport(RestTemplate template, String 
cseUrlPrefix) {
+  private static void testGetAllTransport(RestOperations template, String 
cseUrlPrefix) {
     Map<String, String> params = new HashMap<>();
     params.put("a", "5");
     params.put("b", "3");
@@ -320,7 +320,7 @@ public class JaxrsClient {
     TestMgr.check(-1, result);
   }
 
-  private static void testPost(RestTemplate template, String cseUrlPrefix) {
+  private static void testPost(RestOperations template, String cseUrlPrefix) {
     Map<String, String> params = new HashMap<>();
     params.put("a", "5");
     params.put("b", "3");
@@ -341,17 +341,17 @@ public class JaxrsClient {
         template.postForObject(cseUrlPrefix + "/compute/saysomething", 
reqEntity, String.class));
   }
 
-  private static void testPut(RestTemplate template, String cseUrlPrefix) {
+  private static void testPut(RestOperations template, String cseUrlPrefix) {
     template.put(cseUrlPrefix + "/compute/sayhi/{name}", null, "world");
   }
 
-  private static void testDelete(RestTemplate template, String cseUrlPrefix) {
+  private static void testDelete(RestOperations template, String cseUrlPrefix) 
{
     Map<String, String> params = new HashMap<>();
     params.put("name", "world");
     template.delete(cseUrlPrefix + "/compute/sayhei/?name={name}", params);
   }
 
-  private static void testExchange(RestTemplate template, String cseUrlPrefix) 
{
+  private static void testExchange(RestOperations template, String 
cseUrlPrefix) {
     HttpHeaders headers = new HttpHeaders();
     headers.add("Accept", MediaType.APPLICATION_JSON);
     Person person = new Person();
@@ -368,7 +368,7 @@ public class JaxrsClient {
     TestMgr.check("abcdef", resEntity2.getBody());
   }
 
-  private static void testRawJsonParam(RestTemplate template, String 
cseUrlPrefix) throws Exception {
+  private static void testRawJsonParam(RestOperations template, String 
cseUrlPrefix) throws Exception {
     Map<String, String> person = new HashMap<>();
     person.put("name", "Tom");
     String jsonPerson = 
RestObjectMapperFactory.getRestObjectMapper().writeValueAsString(person);
@@ -377,7 +377,7 @@ public class JaxrsClient {
   }
 
   @SuppressWarnings({"rawtypes"})
-  private static void testValidatorAddFail(RestTemplate template, String 
cseUrlPrefix) {
+  private static void testValidatorAddFail(RestOperations template, String 
cseUrlPrefix) {
     Map<String, String> params = new HashMap<>();
     params.put("a", "5");
     params.put("b", "3");
@@ -409,7 +409,7 @@ public class JaxrsClient {
     TestMgr.check(true, isExcep);
   }
 
-  private static void testValidatorAddSuccess(RestTemplate template, String 
cseUrlPrefix) {
+  private static void testValidatorAddSuccess(RestOperations template, String 
cseUrlPrefix) {
     Map<String, String> params = new HashMap<>();
     params.put("a", "5");
     params.put("b", "20");
@@ -418,7 +418,7 @@ public class JaxrsClient {
   }
 
   @SuppressWarnings({"rawtypes"})
-  private static void testValidatorSayHiFail(RestTemplate template, String 
cseUrlPrefix) {
+  private static void testValidatorSayHiFail(RestOperations template, String 
cseUrlPrefix) {
     boolean isExcep = false;
     try {
       template.exchange(cseUrlPrefix + "sayhi/{name}", HttpMethod.PUT, null, 
String.class, "te");
@@ -443,7 +443,7 @@ public class JaxrsClient {
     TestMgr.check(true, isExcep);
   }
 
-  private static void testValidatorSayHiSuccess(RestTemplate template, String 
cseUrlPrefix) {
+  private static void testValidatorSayHiSuccess(RestOperations template, 
String cseUrlPrefix) {
     ResponseEntity<String> responseEntity =
         template.exchange(cseUrlPrefix + "sayhi/{name}", HttpMethod.PUT, null, 
String.class, "world");
     TestMgr.check(202, responseEntity.getStatusCode().value());
@@ -451,7 +451,7 @@ public class JaxrsClient {
   }
 
   @SuppressWarnings({"rawtypes"})
-  private static void testValidatorExchangeFail(RestTemplate template, String 
cseUrlPrefix) {
+  private static void testValidatorExchangeFail(RestOperations template, 
String cseUrlPrefix) {
     HttpHeaders headers = new HttpHeaders();
     headers.add("Accept", MediaType.APPLICATION_JSON);
     Student student = new Student();
@@ -485,7 +485,7 @@ public class JaxrsClient {
     TestMgr.check(true, isExcep);
   }
 
-  private static void testValidatorExchangeSuccess(RestTemplate template, 
String cseUrlPrefix) {
+  private static void testValidatorExchangeSuccess(RestOperations template, 
String cseUrlPrefix) {
     Student student = new Student();
     student.setName("test");
     student.setAge(15);
@@ -493,7 +493,7 @@ public class JaxrsClient {
     TestMgr.check("hello test 15", result);
   }
 
-  private static void testSpringMvcDefaultValuesJavaPrimitiveRest(RestTemplate 
template) {
+  private static void 
testSpringMvcDefaultValuesJavaPrimitiveRest(RestOperations template) {
     String microserviceName = "jaxrs";
     String cseUrlPrefix = "cse://" + microserviceName + "/JaxRSDefaultValues/";
 
@@ -521,7 +521,7 @@ public class JaxrsClient {
     TestMgr.check("Hello false,\0,0,0,0,0,0.0,0.0,null", result);
   }
 
-  private static void 
testSpringMvcDefaultValuesJavaPrimitiveAllTransport(RestTemplate template) {
+  private static void 
testSpringMvcDefaultValuesJavaPrimitiveAllTransport(RestOperations template) {
     String microserviceName = "jaxrs";
     for (String transport : DemoConst.transports) {
       CategorizedTestCaseRunner.changeTransport(microserviceName, transport);
diff --git 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/CodeFirstRestTemplateJaxrs.java
 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/CodeFirstRestTemplateJaxrs.java
index 27e1c20c6..5d919a5bf 100644
--- 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/CodeFirstRestTemplateJaxrs.java
+++ 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/CodeFirstRestTemplateJaxrs.java
@@ -22,31 +22,31 @@ import org.apache.servicecomb.demo.TestMgr;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.HttpClientErrorException;
 import org.springframework.web.client.RestClientException;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class CodeFirstRestTemplateJaxrs extends CodeFirstRestTemplate {
   @Override
-  protected void testAllTransport(String microserviceName, RestTemplate 
template, String cseUrlPrefix) {
+  protected void testAllTransport(String microserviceName, RestOperations 
template, String cseUrlPrefix) {
     testDefaultPath(template, cseUrlPrefix);
     test404(template);
 
     super.testAllTransport(microserviceName, template, cseUrlPrefix);
   }
 
-  private void testDefaultPath(RestTemplate template, String cseUrlPrefix) {
+  private void testDefaultPath(RestOperations template, String cseUrlPrefix) {
     int result =
         template.getForObject(cseUrlPrefix.substring(0, cseUrlPrefix.length() 
- 1), Integer.class);
     TestMgr.check(100, result);
   }
 
   @Override
-  protected void testOnlyRest(String microserviceName, RestTemplate template, 
String cseUrlPrefix) {
+  protected void testOnlyRest(String microserviceName, RestOperations 
template, String cseUrlPrefix) {
     super.testOnlyRest(microserviceName, template, cseUrlPrefix);
   }
 
 
-  private void test404(RestTemplate template) {
+  private void test404(RestOperations template) {
     HttpClientErrorException exception = null;
     try {
       template.getForEntity("http://127.0.0.1:8080/aPathNotExist";, 
String.class);
diff --git 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java
 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java
index 6613ad268..104e5b8e4 100644
--- 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java
+++ 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/MultiErrorCodeServiceClient.java
@@ -33,7 +33,7 @@ import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 import io.vertx.core.json.Json;
 import io.vertx.core.json.JsonObject;
@@ -43,7 +43,7 @@ import jakarta.ws.rs.core.Response.Status;
 public class MultiErrorCodeServiceClient implements CategorizedTestCase {
   private static final String SERVER = "cse://jaxrs";
 
-  private static RestTemplate template = RestTemplateBuilder.create();
+  private static RestOperations template = RestTemplateBuilder.create();
 
   @Override
   public void testAllTransport() throws Exception {
diff --git 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestClientTimeout.java
 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestClientTimeout.java
index 87293a3e5..7d8017eb3 100644
--- 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestClientTimeout.java
+++ 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestClientTimeout.java
@@ -26,17 +26,17 @@ import org.apache.servicecomb.demo.validator.Student;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class TestClientTimeout implements CategorizedTestCase {
-  private static RestTemplate template = RestTemplateBuilder.create();
+  private static RestOperations template = RestTemplateBuilder.create();
 
   public void testAllTransport() throws Exception {
     testClientTimeOut(template);
   }
 
-  private static void testClientTimeOut(RestTemplate template) {
+  private static void testClientTimeOut(RestOperations template) {
     String microserviceName = "jaxrs";
 
     String cseUrlPrefix = "cse://" + microserviceName + "/clientreqtimeout/";
@@ -45,7 +45,7 @@ public class TestClientTimeout implements CategorizedTestCase 
{
     testClientTimeoutAdd(template, cseUrlPrefix);
   }
 
-  private static void testClientTimeoutSayHi(RestTemplate template, String 
cseUrlPrefix) {
+  private static void testClientTimeoutSayHi(RestOperations template, String 
cseUrlPrefix) {
     Student student = new Student();
     student.setName("timeout");
     student.setAge(30);
@@ -53,7 +53,7 @@ public class TestClientTimeout implements CategorizedTestCase 
{
     TestMgr.check("hello timeout 30", result);
   }
 
-  private static void testClientTimeoutAdd(RestTemplate template, String 
cseUrlPrefix) {
+  private static void testClientTimeoutAdd(RestOperations template, String 
cseUrlPrefix) {
     Map<String, String> params = new HashMap<>();
     params.put("a", "5");
     params.put("b", "20");
diff --git 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestFileUploadSchema.java
 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestFileUploadSchema.java
index cfa900c45..049da2e47 100644
--- 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestFileUploadSchema.java
+++ 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestFileUploadSchema.java
@@ -30,7 +30,7 @@ import org.springframework.core.io.FileSystemResource;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 import jakarta.ws.rs.core.MediaType;
 
@@ -41,7 +41,7 @@ public class TestFileUploadSchema implements 
CategorizedTestCase {
     testUpload(RestTemplateBuilder.create(), "servicecomb://jaxrs/fileUpload");
   }
 
-  private void testUpload(RestTemplate template, String cseUrlPrefix) throws 
IOException {
+  private void testUpload(RestOperations template, String cseUrlPrefix) throws 
IOException {
     String file1Content = "Hello World";
     File file1 = File.createTempFile("jaxrstest1", ".txt");
     FileUtils.writeStringToFile(file1, file1Content, StandardCharsets.UTF_8, 
false);
@@ -50,7 +50,7 @@ public class TestFileUploadSchema implements 
CategorizedTestCase {
     testFileAndStringUpload(template, cseUrlPrefix, file1, file1Content);
   }
 
-  private void testFileUpload(RestTemplate template, String cseUrlPrefix, File 
file1, String file1Content)
+  private void testFileUpload(RestOperations template, String cseUrlPrefix, 
File file1, String file1Content)
       throws IOException {
     String result1 = template.postForObject(cseUrlPrefix + "/upload1", new 
HttpEntity<>(new HashMap<>()), String.class);
     TestMgr.check("null file", result1);
@@ -72,7 +72,7 @@ public class TestFileUploadSchema implements 
CategorizedTestCase {
     TestMgr.check(expect, result2);
   }
 
-  private void testFileAndStringUpload(RestTemplate template, String 
cseUrlPrefix, File file1, String file1Content) {
+  private void testFileAndStringUpload(RestOperations template, String 
cseUrlPrefix, File file1, String file1Content) {
     Map<String, Object> map = new HashMap<>();
     String message = "hi";
     map.put("file1", new FileSystemResource(file1));
diff --git 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestFormRequestSchema.java
 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestFormRequestSchema.java
index f0e9938c1..22163e265 100644
--- 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestFormRequestSchema.java
+++ 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestFormRequestSchema.java
@@ -29,7 +29,7 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 
 @Component
@@ -37,7 +37,7 @@ public class TestFormRequestSchema implements 
CategorizedTestCase {
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(TestFormRequestSchema.class);
 
-  private RestTemplate restTemplate = RestTemplateBuilder.create();
+  private RestOperations restTemplate = RestTemplateBuilder.create();
 
   @Override
   public void testRestTransport() throws Exception {
diff --git 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestQueryParamSchema.java
 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestQueryParamSchema.java
index dccffc20e..8c0933172 100644
--- 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestQueryParamSchema.java
+++ 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestQueryParamSchema.java
@@ -22,7 +22,7 @@ import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.provider.pojo.RpcReference;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class TestQueryParamSchema implements CategorizedTestCase {
@@ -30,7 +30,7 @@ public class TestQueryParamSchema implements 
CategorizedTestCase {
     String testQueryEncode(String param);
   }
 
-  private final RestTemplate restTemplate = RestTemplateBuilder.create();
+  private final RestOperations restTemplate = RestTemplateBuilder.create();
 
   @RpcReference(microserviceName = "jaxrs", schemaId = "QueryParamSchema")
   private QueryParamService queryParamService;
diff --git 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestQueryParamWithListSchema.java
 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestQueryParamWithListSchema.java
index 072c3b8fc..19aa1c66e 100644
--- 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestQueryParamWithListSchema.java
+++ 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestQueryParamWithListSchema.java
@@ -21,11 +21,11 @@ import org.apache.servicecomb.demo.CategorizedTestCase;
 import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class TestQueryParamWithListSchema implements CategorizedTestCase {
-  private RestTemplate restTemplate = RestTemplateBuilder.create();
+  private RestOperations restTemplate = RestTemplateBuilder.create();
 
   @Override
   public void testAllTransport() throws Exception {
diff --git 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestReactiveSchema.java
 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestReactiveSchema.java
index 68fbe6589..6126c053a 100644
--- 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestReactiveSchema.java
+++ 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/TestReactiveSchema.java
@@ -24,13 +24,13 @@ import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class TestReactiveSchema implements CategorizedTestCase {
   @SuppressWarnings("rawtypes")
   public void testRestTransport() throws Exception {
-    RestTemplate restTemplate = RestTemplateBuilder.create();
+    RestOperations restTemplate = RestTemplateBuilder.create();
     try {
       
restTemplate.getForObject("cse://jaxrs/reactive/testSyncInvokeInEventLoop?a=1&b=2",
 int.class);
       TestMgr.check(true, false);
diff --git 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamRestTemplateClient.java
 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamRestTemplateClient.java
index 33e8d9f5a..decb4a420 100644
--- 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamRestTemplateClient.java
+++ 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/beanParam/BeanParamRestTemplateClient.java
@@ -33,11 +33,11 @@ import org.springframework.http.HttpMethod;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class BeanParamRestTemplateClient implements CategorizedTestCase {
-  RestTemplate restTemplate;
+  RestOperations restTemplate;
 
   public BeanParamRestTemplateClient() {
     restTemplate = RestTemplateBuilder.create();
@@ -77,9 +77,12 @@ public class BeanParamRestTemplateClient implements 
CategorizedTestCase {
   }
 
   private void testUpload() {
-    BufferedInputStream bufferedInputStream0 = new BufferedInputStream(new 
ByteArrayInputStream("up0".getBytes(StandardCharsets.UTF_8)));
-    BufferedInputStream bufferedInputStream1 = new BufferedInputStream(new 
ByteArrayInputStream("up1".getBytes(StandardCharsets.UTF_8)));
-    BufferedInputStream bufferedInputStream2 = new BufferedInputStream(new 
ByteArrayInputStream("up2".getBytes(StandardCharsets.UTF_8)));
+    BufferedInputStream bufferedInputStream0 = new BufferedInputStream(
+        new ByteArrayInputStream("up0".getBytes(StandardCharsets.UTF_8)));
+    BufferedInputStream bufferedInputStream1 = new BufferedInputStream(
+        new ByteArrayInputStream("up1".getBytes(StandardCharsets.UTF_8)));
+    BufferedInputStream bufferedInputStream2 = new BufferedInputStream(
+        new ByteArrayInputStream("up2".getBytes(StandardCharsets.UTF_8)));
 
     HashMap<String, Object> formData = new HashMap<>();
     formData.put("up0", bufferedInputStream0);
diff --git 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/injectBean/TestInjectBeanSchema.java
 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/injectBean/TestInjectBeanSchema.java
index 175701c23..02d1ee1d9 100644
--- 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/injectBean/TestInjectBeanSchema.java
+++ 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/injectBean/TestInjectBeanSchema.java
@@ -21,11 +21,11 @@ import org.apache.servicecomb.demo.CategorizedTestCase;
 import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class TestInjectBeanSchema implements CategorizedTestCase {
-  RestTemplate restTemplate = RestTemplateBuilder.create();
+  RestOperations restTemplate = RestTemplateBuilder.create();
 
   @Override
   public void testAllTransport() throws Exception {
diff --git 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/pojoDefault/DefaultModelServiceClient.java
 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/pojoDefault/DefaultModelServiceClient.java
index d5ef35517..a221853b6 100644
--- 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/pojoDefault/DefaultModelServiceClient.java
+++ 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/pojoDefault/DefaultModelServiceClient.java
@@ -21,10 +21,10 @@ import 
org.apache.servicecomb.config.InMemoryDynamicPropertiesSource;
 import org.apache.servicecomb.demo.TestMgr;
 import 
org.apache.servicecomb.demo.jaxrs.server.pojoDefault.DefaultResponseModel;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 public class DefaultModelServiceClient {
-  private static RestTemplate template = RestTemplateBuilder.create();
+  private static RestOperations template = RestTemplateBuilder.create();
 
   private static String urlPrefix = "cse://jaxrs/DefaultModelService";
 
diff --git 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/validation/ValidationServiceClient.java
 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/validation/ValidationServiceClient.java
index 6ca9d5b7d..4b99fff03 100644
--- 
a/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/validation/ValidationServiceClient.java
+++ 
b/demo/demo-jaxrs/jaxrs-client/src/main/java/org/apache/servicecomb/demo/jaxrs/client/validation/ValidationServiceClient.java
@@ -26,12 +26,12 @@ import org.apache.servicecomb.demo.validator.Teacher;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 import jakarta.ws.rs.core.Response.Status;
 
 public class ValidationServiceClient {
-  private static RestTemplate template = RestTemplateBuilder.create();
+  private static RestOperations template = RestTemplateBuilder.create();
 
   private static String urlPrefix = "cse://jaxrs/ValidationService";
 
diff --git 
a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/ReactiveSchema.java
 
b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/ReactiveSchema.java
index 67886059b..2143d27a0 100644
--- 
a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/ReactiveSchema.java
+++ 
b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/ReactiveSchema.java
@@ -17,16 +17,16 @@
 
 package org.apache.servicecomb.demo.jaxrs.server;
 
+import org.apache.servicecomb.provider.rest.common.RestSchema;
+import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
+import org.springframework.web.client.RestOperations;
+
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
 import jakarta.ws.rs.Produces;
 import jakarta.ws.rs.QueryParam;
 import jakarta.ws.rs.core.MediaType;
 
-import org.apache.servicecomb.provider.rest.common.RestSchema;
-import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
-import org.springframework.web.client.RestTemplate;
-
 @RestSchema(schemaId = "ReactiveSchema")
 @Path("/reactive")
 @Produces(MediaType.APPLICATION_JSON)
@@ -35,7 +35,7 @@ public class ReactiveSchema {
   @Path("/testSyncInvokeInEventLoop")
   @GET
   public int testSyncInvokeInEventLoop(@QueryParam("a") int a, 
@QueryParam("b") int b) {
-    RestTemplate client = RestTemplateBuilder.create();
+    RestOperations client = RestTemplateBuilder.create();
     return client.getForObject("cse://jaxrs/compute/reduce?a=1&b=2", 
int.class);
   }
 }
diff --git 
a/demo/demo-local-registry/demo-local-registry-client/src/main/java/org/apache/servicecomb/demo/localRegistryClient/LocalRegistryServerTest.java
 
b/demo/demo-local-registry/demo-local-registry-client/src/main/java/org/apache/servicecomb/demo/localRegistryClient/LocalRegistryServerTest.java
index 741a07321..06a24601e 100644
--- 
a/demo/demo-local-registry/demo-local-registry-client/src/main/java/org/apache/servicecomb/demo/localRegistryClient/LocalRegistryServerTest.java
+++ 
b/demo/demo-local-registry/demo-local-registry-client/src/main/java/org/apache/servicecomb/demo/localRegistryClient/LocalRegistryServerTest.java
@@ -27,7 +27,7 @@ import org.apache.servicecomb.registry.DiscoveryManager;
 import org.apache.servicecomb.registry.api.DiscoveryInstance;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class LocalRegistryServerTest implements CategorizedTestCase {
@@ -90,7 +90,7 @@ public class LocalRegistryServerTest implements 
CategorizedTestCase {
   }
 
   private void testServerGetName() {
-    RestTemplate template = RestTemplateBuilder.create();
+    RestOperations template = RestTemplateBuilder.create();
     TestMgr.check("2", template
         
.getForObject("cse://demo-local-registry-server/register/url/prefix/getName?name=2",
             String.class));
diff --git 
a/demo/demo-multi-registries/demo-multi-registries-client/src/main/java/org/apache/servicecomb/demo/registry/MultiRegistriesServerTestCase.java
 
b/demo/demo-multi-registries/demo-multi-registries-client/src/main/java/org/apache/servicecomb/demo/registry/MultiRegistriesServerTestCase.java
index a1f51eadb..abbd66a3d 100644
--- 
a/demo/demo-multi-registries/demo-multi-registries-client/src/main/java/org/apache/servicecomb/demo/registry/MultiRegistriesServerTestCase.java
+++ 
b/demo/demo-multi-registries/demo-multi-registries-client/src/main/java/org/apache/servicecomb/demo/registry/MultiRegistriesServerTestCase.java
@@ -26,11 +26,11 @@ import org.apache.servicecomb.registry.DiscoveryManager;
 import org.apache.servicecomb.registry.api.DiscoveryInstance;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class MultiRegistriesServerTestCase implements CategorizedTestCase {
-  RestTemplate template = RestTemplateBuilder.create();
+  RestOperations template = RestTemplateBuilder.create();
 
   private DiscoveryManager discoveryManager;
 
diff --git 
a/demo/demo-nacos/test-client/src/main/java/org/apache/servicecomb/samples/HelloWorldIT.java
 
b/demo/demo-nacos/test-client/src/main/java/org/apache/servicecomb/samples/HelloWorldIT.java
index 2be179a6a..59d06bb1e 100644
--- 
a/demo/demo-nacos/test-client/src/main/java/org/apache/servicecomb/samples/HelloWorldIT.java
+++ 
b/demo/demo-nacos/test-client/src/main/java/org/apache/servicecomb/samples/HelloWorldIT.java
@@ -20,11 +20,12 @@ package org.apache.servicecomb.samples;
 import org.apache.servicecomb.demo.CategorizedTestCase;
 import org.apache.servicecomb.demo.TestMgr;
 import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestOperations;
 import org.springframework.web.client.RestTemplate;
 
 @Component
 public class HelloWorldIT implements CategorizedTestCase {
-  RestTemplate template = new RestTemplate();
+  RestOperations template = new RestTemplate();
 
   @Override
   public void testRestTransport() throws Exception {
diff --git 
a/demo/demo-register-url-prefix/demo-register-url-prefix-client/src/main/java/org/apache/servicecomb/demo/prefix/Application.java
 
b/demo/demo-register-url-prefix/demo-register-url-prefix-client/src/main/java/org/apache/servicecomb/demo/prefix/Application.java
index d5a7efa48..8b53c6c6b 100644
--- 
a/demo/demo-register-url-prefix/demo-register-url-prefix-client/src/main/java/org/apache/servicecomb/demo/prefix/Application.java
+++ 
b/demo/demo-register-url-prefix/demo-register-url-prefix-client/src/main/java/org/apache/servicecomb/demo/prefix/Application.java
@@ -22,7 +22,7 @@ import 
org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @SpringBootApplication
 public class Application {
@@ -33,7 +33,7 @@ public class Application {
   }
 
   public static void runTest() {
-    RestTemplate template = RestTemplateBuilder.create();
+    RestOperations template = RestTemplateBuilder.create();
     TestMgr.check("2", template
         
.getForObject("cse://demo-register-url-prefix-server/hellodemo/register/url/prefix/getName?name=2",
             String.class));
diff --git 
a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CodeFirstRestTemplate.java
 
b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CodeFirstRestTemplate.java
index 6f37563af..ee2bf3958 100644
--- 
a/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CodeFirstRestTemplate.java
+++ 
b/demo/demo-schema/src/main/java/org/apache/servicecomb/demo/CodeFirstRestTemplate.java
@@ -38,7 +38,7 @@ import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.HttpStatusCode;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 import io.vertx.core.json.JsonObject;
 
@@ -55,7 +55,7 @@ public class CodeFirstRestTemplate {
     TestMgr.setMsg(microserviceName, transport);
   }
 
-  public void testCodeFirst(RestTemplate template, String microserviceName, 
String basePath) {
+  public void testCodeFirst(RestOperations template, String microserviceName, 
String basePath) {
     String cseUrlPrefix = "cse://" + microserviceName + basePath;
     changeTransport(microserviceName, "highway");
     testOnlyHighway(template, cseUrlPrefix);
@@ -69,7 +69,7 @@ public class CodeFirstRestTemplate {
     }
   }
 
-  protected void testAllTransport(String microserviceName, RestTemplate 
template, String cseUrlPrefix) {
+  protected void testAllTransport(String microserviceName, RestOperations 
template, String cseUrlPrefix) {
     testCodeFirstUserMap(template, cseUrlPrefix);
     testCodeFirstTextPlain(template, cseUrlPrefix);
     testCodeFirstBytes(template, cseUrlPrefix);
@@ -90,11 +90,11 @@ public class CodeFirstRestTemplate {
     testRawJson(template, cseUrlPrefix);
   }
 
-  protected void testOnlyHighway(RestTemplate template, String cseUrlPrefix) {
+  protected void testOnlyHighway(RestOperations template, String cseUrlPrefix) 
{
 
   }
 
-  protected void testOnlyRest(String microserviceName, RestTemplate template, 
String cseUrlPrefix) {
+  protected void testOnlyRest(String microserviceName, RestOperations 
template, String cseUrlPrefix) {
     testCodeFirstUserMap(template, cseUrlPrefix);
     testCodeFirstTextPlain(template, cseUrlPrefix);
     testCodeFirstBytes(template, cseUrlPrefix);
@@ -109,7 +109,7 @@ public class CodeFirstRestTemplate {
     testTraceIdOnNotSetBefore(template, cseUrlPrefix);
   }
 
-  private void testCodeFirstUserMap(RestTemplate template, String 
cseUrlPrefix) {
+  private void testCodeFirstUserMap(RestOperations template, String 
cseUrlPrefix) {
     User user1 = new User();
     user1.setNames(new String[] {"u1", "u2"});
 
@@ -137,7 +137,7 @@ public class CodeFirstRestTemplate {
     TestMgr.check("u4", result.get("u2").getNames()[1]);
   }
 
-  private void testCodeFirstTextPlain(RestTemplate template, String 
cseUrlPrefix) {
+  private void testCodeFirstTextPlain(RestOperations template, String 
cseUrlPrefix) {
     String body = "a=1";
     String result = template.postForObject(cseUrlPrefix + "textPlain",
         body,
@@ -145,7 +145,7 @@ public class CodeFirstRestTemplate {
     TestMgr.check(body, result);
   }
 
-  private void testCodeFirstBytes(RestTemplate template, String cseUrlPrefix) {
+  private void testCodeFirstBytes(RestOperations template, String 
cseUrlPrefix) {
     byte[] body = new byte[] {0, 1, 2};
     byte[] result = template.postForObject(cseUrlPrefix + "bytes",
         body,
@@ -160,7 +160,7 @@ public class CodeFirstRestTemplate {
     TestMgr.check(expectStatusCode, httpStatus.value());
   }
 
-  private void testCseResponse(String targetMicroserviceName, RestTemplate 
template,
+  private void testCseResponse(String targetMicroserviceName, RestOperations 
template,
       String cseUrlPrefix) {
     String srcMicroserviceName = 
BootStrapProperties.readServiceName(environment);
 
@@ -172,7 +172,7 @@ public class CodeFirstRestTemplate {
     checkStatusCode(targetMicroserviceName, 202, 
responseEntity.getStatusCode());
   }
 
-  private void testCodeFirstAddDate(RestTemplate template, String 
cseUrlPrefix) {
+  private void testCodeFirstAddDate(RestOperations template, String 
cseUrlPrefix) {
     Map<String, Object> body = new HashMap<>();
     Date date = new Date();
     body.put("date", date);
@@ -185,7 +185,7 @@ public class CodeFirstRestTemplate {
     TestMgr.check(new Date(date.getTime() + seconds * 1000), result);
   }
 
-  private void testCodeFirstAddString(RestTemplate template, String 
cseUrlPrefix) {
+  private void testCodeFirstAddString(RestOperations template, String 
cseUrlPrefix) {
     ResponseEntity<String> responseEntity =
         template.exchange(cseUrlPrefix + "addstring?s=a&s=b",
             HttpMethod.DELETE,
@@ -194,25 +194,25 @@ public class CodeFirstRestTemplate {
     TestMgr.check("ab", responseEntity.getBody());
   }
 
-  private void testCodeFirstIsTrue(RestTemplate template, String cseUrlPrefix) 
{
+  private void testCodeFirstIsTrue(RestOperations template, String 
cseUrlPrefix) {
     boolean result = template.getForObject(cseUrlPrefix + "istrue", 
boolean.class);
     TestMgr.check(true, result);
   }
 
-  private void testCodeFirstSayHi2(RestTemplate template, String cseUrlPrefix) 
{
+  private void testCodeFirstSayHi2(RestOperations template, String 
cseUrlPrefix) {
     ResponseEntity<String> responseEntity =
         template.exchange(cseUrlPrefix + "sayhi/{name}/v2", HttpMethod.PUT, 
null, String.class, "world");
     TestMgr.check("world sayhi 2", responseEntity.getBody());
   }
 
-  private void testCodeFirstSayHi(RestTemplate template, String cseUrlPrefix) {
+  private void testCodeFirstSayHi(RestOperations template, String 
cseUrlPrefix) {
     ResponseEntity<String> responseEntity =
         template.exchange(cseUrlPrefix + "sayhi/{name}", HttpMethod.PUT, null, 
String.class, "world");
     TestMgr.check(202, responseEntity.getStatusCode().value());
     TestMgr.check("world sayhi", responseEntity.getBody());
   }
 
-  private void testCodeFirstSaySomething(RestTemplate template, String 
cseUrlPrefix) {
+  private void testCodeFirstSaySomething(RestOperations template, String 
cseUrlPrefix) {
     Person person = new Person();
     person.setName("person name");
 
@@ -225,7 +225,7 @@ public class CodeFirstRestTemplate {
     TestMgr.check("prefix  prefix person name", result);
   }
 
-  private void testCodeFirstSayHello(RestTemplate template, String 
cseUrlPrefix) {
+  private void testCodeFirstSayHello(RestOperations template, String 
cseUrlPrefix) {
     Map<String, String> persionFieldMap = new HashMap<>();
     persionFieldMap.put("name", "person name from map");
     Person result = template.postForObject(cseUrlPrefix + "sayhello", 
persionFieldMap, Person.class);
@@ -237,7 +237,7 @@ public class CodeFirstRestTemplate {
     TestMgr.check("hello person name from Object", result);
   }
 
-  private void testCodeFirstAdd(RestTemplate template, String cseUrlPrefix) {
+  private void testCodeFirstAdd(RestOperations template, String cseUrlPrefix) {
     Map<String, String> params = new HashMap<>();
     params.put("a", "5");
     params.put("b", "3");
@@ -246,7 +246,7 @@ public class CodeFirstRestTemplate {
     TestMgr.check(8, result);
   }
 
-  private void testCodeFirstReduce(RestTemplate template, String cseUrlPrefix) 
{
+  private void testCodeFirstReduce(RestOperations template, String 
cseUrlPrefix) {
     Map<String, String> params = new HashMap<>();
     params.put("a", "5");
 
@@ -259,7 +259,7 @@ public class CodeFirstRestTemplate {
     TestMgr.check(2, result.getBody());
   }
 
-  private void testModelFieldIgnore(RestTemplate template, String 
cseUrlPrefix) {
+  private void testModelFieldIgnore(RestOperations template, String 
cseUrlPrefix) {
     InputModelForTestIgnore input = new 
InputModelForTestIgnore("input_id_rest", "input_id_content",
         new Person("inputSomeone"), new JsonObject("{\"InputJsonKey\" : 
\"InputJsonValue\"}"), () -> {
     });
@@ -279,19 +279,19 @@ public class CodeFirstRestTemplate {
     TestMgr.check(null, output.getOutputObject());
   }
 
-  private void testRawJson(RestTemplate template, String cseUrlPrefix) {
+  private void testRawJson(RestOperations template, String cseUrlPrefix) {
     String input = "{\"name\" : \"zyy\"}";
     String output = template.postForObject(cseUrlPrefix + "rawJsonAnnotation", 
input, String.class);
     TestMgr.check("hello zyy", output);
   }
 
-  private void testTraceIdOnNotSetBefore(RestTemplate template, String 
cseUrlPrefix) {
+  private void testTraceIdOnNotSetBefore(RestOperations template, String 
cseUrlPrefix) {
     String traceIdUrl = cseUrlPrefix + "traceId";
     String result = template.getForObject(traceIdUrl, String.class);
     TestMgr.checkNotEmpty(result);
   }
 
-  private void testTraceIdOnContextContainsTraceId(RestTemplate template, 
String cseUrlPrefix) {
+  private void testTraceIdOnContextContainsTraceId(RestOperations template, 
String cseUrlPrefix) {
     String traceIdUrl = cseUrlPrefix + "traceId";
     InvocationContext invocationContext = new InvocationContext();
     invocationContext.addContext(CoreConst.TRACE_ID_NAME, 
String.valueOf(Long.MIN_VALUE));
diff --git 
a/demo/demo-spring-boot-transport/demo-spring-boot-springmvc-client/src/main/java/org/apache/servicecomb/springboot/springmvc/client/PlaceHolderSchemaTest.java
 
b/demo/demo-spring-boot-transport/demo-spring-boot-springmvc-client/src/main/java/org/apache/servicecomb/springboot/springmvc/client/PlaceHolderSchemaTest.java
index 7a70afa94..f7e066497 100644
--- 
a/demo/demo-spring-boot-transport/demo-spring-boot-springmvc-client/src/main/java/org/apache/servicecomb/springboot/springmvc/client/PlaceHolderSchemaTest.java
+++ 
b/demo/demo-spring-boot-transport/demo-spring-boot-springmvc-client/src/main/java/org/apache/servicecomb/springboot/springmvc/client/PlaceHolderSchemaTest.java
@@ -21,13 +21,13 @@ import org.apache.servicecomb.demo.CategorizedTestCase;
 import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class PlaceHolderSchemaTest implements CategorizedTestCase {
   @Override
   public void testRestTransport() throws Exception {
-    RestTemplate template = RestTemplateBuilder.create();
+    RestOperations template = RestTemplateBuilder.create();
     String result = 
template.getForObject("servicecomb://springmvc/placeholder/schema?name=test", 
String.class);
     TestMgr.check("test", result);
   }
diff --git 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/SpringmvcClient.java
 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/SpringmvcClient.java
index 4c7c6afc5..12357e0c3 100644
--- 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/SpringmvcClient.java
+++ 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/SpringmvcClient.java
@@ -51,6 +51,7 @@ import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestOperations;
 import org.springframework.web.client.RestTemplate;
 
 
@@ -63,7 +64,7 @@ public class SpringmvcClient {
 
   private static RestTemplate templateUrlWithProviderPrefix = new 
CseRestTemplate();
 
-  private static RestTemplate restTemplate;
+  private static RestOperations restTemplate;
 
   private static Controller controller;
 
diff --git 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java
 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java
index 9240dbd38..f561b954f 100644
--- 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java
+++ 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/CodeFirstRestTemplateSpringmvc.java
@@ -45,7 +45,7 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 import jakarta.servlet.http.Part;
 
@@ -81,7 +81,7 @@ public class CodeFirstRestTemplateSpringmvc extends 
CodeFirstRestTemplate {
   }
 
   @Override
-  protected void testOnlyRest(String microservcieName, RestTemplate template, 
String cseUrlPrefix) {
+  protected void testOnlyRest(String microservcieName, RestOperations 
template, String cseUrlPrefix) {
     try {
       testUpload(template, cseUrlPrefix);
     } catch (IOException e) {
@@ -100,7 +100,7 @@ public class CodeFirstRestTemplateSpringmvc extends 
CodeFirstRestTemplate {
   }
 
   @Override
-  protected void testOnlyHighway(RestTemplate template, String cseUrlPrefix) {
+  protected void testOnlyHighway(RestOperations template, String cseUrlPrefix) 
{
     testResponse.runHighway();
     testObject.runHighway();
     testGeneric.runHighway();
@@ -109,7 +109,7 @@ public class CodeFirstRestTemplateSpringmvc extends 
CodeFirstRestTemplate {
   }
 
   @Override
-  protected void testAllTransport(String microserviceName, RestTemplate 
template, String cseUrlPrefix) {
+  protected void testAllTransport(String microserviceName, RestOperations 
template, String cseUrlPrefix) {
     testResponse.runAllTransport();
     testObject.runAllTransport();
     testGeneric.runAllTransport();
@@ -120,7 +120,7 @@ public class CodeFirstRestTemplateSpringmvc extends 
CodeFirstRestTemplate {
     super.testAllTransport(microserviceName, template, cseUrlPrefix);
   }
 
-  private void testUpload(RestTemplate template, String cseUrlPrefix) throws 
IOException {
+  private void testUpload(RestOperations template, String cseUrlPrefix) throws 
IOException {
     String file1Content = "hello world";
     File file1 = File.createTempFile("测 试", ".txt");
     FileUtils.writeStringToFile(file1, file1Content, StandardCharsets.UTF_8, 
false);
@@ -166,7 +166,7 @@ public class CodeFirstRestTemplateSpringmvc extends 
CodeFirstRestTemplate {
     TestMgr.check(expect, result);
   }
 
-  private String testRestTemplateUpload(RestTemplate template, String 
cseUrlPrefix, File file1, File someFile) {
+  private String testRestTemplateUpload(RestOperations template, String 
cseUrlPrefix, File file1, File someFile) {
     MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
     map.add("file1", new FileSystemResource(file1));
     map.add("someFile", new FileSystemResource(someFile));
@@ -177,7 +177,7 @@ public class CodeFirstRestTemplateSpringmvc extends 
CodeFirstRestTemplate {
         String.class);
   }
 
-  private void testResponseEntity(String microserviceName, RestTemplate 
template, String cseUrlPrefix) {
+  private void testResponseEntity(String microserviceName, RestOperations 
template, String cseUrlPrefix) {
     Map<String, Object> body = new HashMap<>();
     Date date = new Date();
     body.put("date", date);
@@ -207,7 +207,7 @@ public class CodeFirstRestTemplateSpringmvc extends 
CodeFirstRestTemplate {
     TestMgr.check(retryResult, 5);
   }
 
-  private void testCodeFirstTestForm(RestTemplate template, String 
cseUrlPrefix) {
+  private void testCodeFirstTestForm(RestOperations template, String 
cseUrlPrefix) {
     HttpHeaders formHeaders = new HttpHeaders();
     formHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
     Map<String, String> map = new HashMap<>();
@@ -221,7 +221,7 @@ public class CodeFirstRestTemplateSpringmvc extends 
CodeFirstRestTemplate {
         .check(code + "hello", template.postForEntity(cseUrlPrefix + 
"/testform", formEntiry, String.class).getBody());
   }
 
-  private void testCodeFirstTestFormHighway(RestTemplate template, String 
cseUrlPrefix) {
+  private void testCodeFirstTestFormHighway(RestOperations template, String 
cseUrlPrefix) {
     HttpHeaders formHeaders = new HttpHeaders();
     formHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
     Map<String, String> map = new HashMap<>();
@@ -240,7 +240,7 @@ public class CodeFirstRestTemplateSpringmvc extends 
CodeFirstRestTemplate {
         template.postForEntity(cseUrlPrefix + "/testform", formEntiry, 
String.class).getBody());
   }
 
-  private void testCodeFirstTestFormRest(RestTemplate template, String 
cseUrlPrefix) {
+  private void testCodeFirstTestFormRest(RestOperations template, String 
cseUrlPrefix) {
     HttpHeaders formHeaders = new HttpHeaders();
     formHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
     Map<String, String> map = new HashMap<>();
diff --git 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestContentType.java
 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestContentType.java
index 4fa466af3..aa0d9d0f6 100644
--- 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestContentType.java
+++ 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestContentType.java
@@ -25,13 +25,13 @@ import 
org.apache.servicecomb.swagger.generator.SwaggerConst;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 import jakarta.ws.rs.core.MediaType;
 
 public class TestContentType {
 
-  private RestTemplate restTemplate = RestTemplateBuilder.create();
+  private RestOperations restTemplate = RestTemplateBuilder.create();
 
   public void runAllTest() {
     testGlobalSetting();
diff --git 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestControllerImpl.java
 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestControllerImpl.java
index cd20952cb..7e74b18fc 100644
--- 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestControllerImpl.java
+++ 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestControllerImpl.java
@@ -21,12 +21,12 @@ import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 
 @Component
 public class TestControllerImpl implements CategorizedTestCase {
-  RestTemplate restTemplate = RestTemplateBuilder.create();
+  RestOperations restTemplate = RestTemplateBuilder.create();
 
   private static final String SERVER = "servicecomb://springmvc";
 
diff --git 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestDateTimeSchema.java
 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestDateTimeSchema.java
index f3aff3e50..df6325490 100644
--- 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestDateTimeSchema.java
+++ 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestDateTimeSchema.java
@@ -42,7 +42,7 @@ import 
org.apache.servicecomb.swagger.invocation.context.InvocationContext;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpMethod;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 interface DateTimeSchemaInf {
   Date getDate(Date date);
@@ -167,7 +167,7 @@ public class TestDateTimeSchema implements 
CategorizedTestCase {
     VersionedCache serversVersionedCache = discoveryTree.discovery(context, 
"springmvctest", "springmvc");
     List<String> enpoints = serversVersionedCache.data();
 
-    RestTemplate restTemplate = RestTemplateBuilder.create();
+    RestOperations restTemplate = RestTemplateBuilder.create();
 
     for (String endpoint : enpoints) {
       CseHttpEntity<?> entity = new CseHttpEntity<>(null);
diff --git 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestDownloadSchema.java
 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestDownloadSchema.java
index 40214c1f5..20a920a63 100644
--- 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestDownloadSchema.java
+++ 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestDownloadSchema.java
@@ -17,6 +17,8 @@
 
 package org.apache.servicecomb.demo.springmvc.client;
 
+import java.util.Collections;
+
 import org.apache.servicecomb.demo.CategorizedTestCase;
 import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.foundation.vertx.http.ReadStreamPart;
@@ -24,9 +26,7 @@ import 
org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
-
-import java.util.Collections;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class TestDownloadSchema implements CategorizedTestCase {
@@ -39,7 +39,7 @@ public class TestDownloadSchema implements 
CategorizedTestCase {
   }
 
   private void testDownloadFileAndDeleted() throws Exception {
-    RestTemplate restTemplate = RestTemplateBuilder.create();
+    RestOperations restTemplate = RestTemplateBuilder.create();
     ReadStreamPart readStreamPart = restTemplate
         
.getForObject("servicecomb://springmvc/download/deleteAfterFinished?content=hello",
 ReadStreamPart.class);
     String hello = readStreamPart.saveAsString().get();
@@ -51,7 +51,7 @@ public class TestDownloadSchema implements 
CategorizedTestCase {
   }
 
   private void testDownloadFileWithNull() throws Exception {
-    RestTemplate restTemplate = RestTemplateBuilder.create();
+    RestOperations restTemplate = RestTemplateBuilder.create();
     ReadStreamPart readStreamPart = restTemplate
         
.getForObject("servicecomb://springmvc/download/partIsNull?content=test", 
ReadStreamPart.class);
     String result = readStreamPart.saveAsString().get();
@@ -64,7 +64,7 @@ public class TestDownloadSchema implements 
CategorizedTestCase {
   }
 
   private void testDownloadFileNotDeleted() throws Exception {
-    RestTemplate restTemplate = RestTemplateBuilder.create();
+    RestOperations restTemplate = RestTemplateBuilder.create();
     ReadStreamPart readStreamPart = restTemplate
         
.getForObject("servicecomb://springmvc/download/notDeleteAfterFinished?content=hello",
 ReadStreamPart.class);
     String hello = readStreamPart.saveAsString().get();
@@ -76,10 +76,11 @@ public class TestDownloadSchema implements 
CategorizedTestCase {
   }
 
   private void testSetContentTypeByResponseEntity() throws Exception {
-    RestTemplate restTemplate = RestTemplateBuilder.create();
+    RestOperations restTemplate = RestTemplateBuilder.create();
     ResponseEntity<ReadStreamPart> responseEntity = restTemplate
-            
.getForEntity("servicecomb://springmvc/download/setContentTypeByResponseEntity?content=hello&contentType=customType",
-                    ReadStreamPart.class);
+        .getForEntity(
+            
"servicecomb://springmvc/download/setContentTypeByResponseEntity?content=hello&contentType=customType",
+            ReadStreamPart.class);
     String hello = responseEntity.getBody().saveAsString().get();
     TestMgr.check(responseEntity.getHeaders().get(HttpHeaders.CONTENT_TYPE), 
Collections.singletonList("customType"));
     TestMgr.check(hello, "hello");
diff --git 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestGeneric.java
 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestGeneric.java
index 0a950b56c..ce976f10d 100644
--- 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestGeneric.java
+++ 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestGeneric.java
@@ -23,14 +23,14 @@ import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.demo.server.User;
 import org.apache.servicecomb.foundation.common.Holder;
 import org.apache.servicecomb.provider.pojo.Invoker;
-import org.apache.servicecomb.provider.springmvc.reference.CseRestTemplate;
+import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.springframework.http.HttpStatus;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 public class TestGeneric {
   private CodeFirstSpringmvcIntf intf;
 
-  private RestTemplate restTemplate = new CseRestTemplate();
+  private RestOperations restTemplate = RestTemplateBuilder.create();
 
   private String prefix = "cse://springmvc/codeFirstSpringmvc";
 
diff --git 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestInvokeWhenServerNotReady.java
 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestInvokeWhenServerNotReady.java
index faa6f9874..899de3dcd 100644
--- 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestInvokeWhenServerNotReady.java
+++ 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestInvokeWhenServerNotReady.java
@@ -26,7 +26,7 @@ import org.apache.servicecomb.provider.pojo.RpcReference;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.apache.servicecomb.swagger.invocation.context.InvocationContext;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class TestInvokeWhenServerNotReady {
@@ -44,7 +44,7 @@ public class TestInvokeWhenServerNotReady {
     new Thread(() -> {
       for (int i = 0; i < 100; i++) {
         try {
-          RestTemplate template = RestTemplateBuilder.create();
+          RestOperations template = RestTemplateBuilder.create();
           
template.getForObject("servicecomb://springmvc/upload/isServerStartUpSuccess", 
Boolean.class);
         } catch (Throwable e) {
           // ignore
diff --git 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestMaxHttpUrlLength.java
 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestMaxHttpUrlLength.java
index 08f343742..5d3422ace 100644
--- 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestMaxHttpUrlLength.java
+++ 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestMaxHttpUrlLength.java
@@ -23,7 +23,7 @@ import 
org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 import com.google.common.base.Strings;
 
@@ -37,7 +37,7 @@ public class TestMaxHttpUrlLength implements 
CategorizedTestCase {
   }
 
   private void testUrlNotLongerThan4096() {
-    RestTemplate restTemplate = RestTemplateBuilder.create();
+    RestOperations restTemplate = RestTemplateBuilder.create();
     // \r doesn't count for url length Since netty 4.1.88.Final See 
https://github.com/netty/netty/pull/12321
     String q = Strings.repeat("q",
         4096 + 1 - "GET /api/springmvc/controller/sayhi?name=".length() - " 
HTTP/1.1\r".length());
diff --git 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestObject.java
 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestObject.java
index e3a104398..498a7d0c8 100644
--- 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestObject.java
+++ 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestObject.java
@@ -26,13 +26,13 @@ import org.apache.servicecomb.demo.EmptyObject;
 import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.foundation.common.Holder;
 import org.apache.servicecomb.provider.pojo.Invoker;
-import org.apache.servicecomb.provider.springmvc.reference.CseRestTemplate;
-import org.springframework.web.client.RestTemplate;
+import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
+import org.springframework.web.client.RestOperations;
 
 public class TestObject {
   private CodeFirstSpringmvcIntf intf;
 
-  private RestTemplate restTemplate = new CseRestTemplate();
+  private RestOperations restTemplate = RestTemplateBuilder.create();
 
   private String prefix = "cse://springmvc/codeFirstSpringmvc";
 
diff --git 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestRestTemplate.java
 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestRestTemplate.java
index c7069a898..a9d02553b 100644
--- 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestRestTemplate.java
+++ 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestRestTemplate.java
@@ -25,10 +25,10 @@ import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.util.Assert;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 public class TestRestTemplate {
-  private RestTemplate restTemplate = RestTemplateBuilder.create();
+  private RestOperations restTemplate = RestTemplateBuilder.create();
 
   public void runAllTest() {
     testvoidResponse();
diff --git 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestRetrySchema.java
 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestRetrySchema.java
index f6a597a85..501ff30f1 100644
--- 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestRetrySchema.java
+++ 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestRetrySchema.java
@@ -23,7 +23,7 @@ import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.provider.pojo.RpcReference;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class TestRetrySchema implements CategorizedTestCase {
@@ -36,7 +36,7 @@ public class TestRetrySchema implements CategorizedTestCase {
   @RpcReference(microserviceName = "springmvc", schemaId = "RetrySchema")
   private RetrySchemaInf retrySchemaInf;
 
-  RestTemplate restTemplate = RestTemplateBuilder.create();
+  RestOperations restTemplate = RestTemplateBuilder.create();
 
   private static final String SERVER = "servicecomb://springmvc";
 
diff --git 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestUploadSchema.java
 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestUploadSchema.java
index 8acc9bdb0..45b5d4c66 100644
--- 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestUploadSchema.java
+++ 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestUploadSchema.java
@@ -41,7 +41,7 @@ import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Component;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class TestUploadSchema implements CategorizedTestCase {
@@ -63,7 +63,7 @@ public class TestUploadSchema implements CategorizedTestCase {
   }
 
   private void testServerStartupSuccess() {
-    RestTemplate template = RestTemplateBuilder.create();
+    RestOperations template = RestTemplateBuilder.create();
     boolean result = 
template.getForObject("servicecomb://springmvc/upload/isServerStartUpSuccess", 
Boolean.class);
     TestMgr.check(result, true);
   }
@@ -83,7 +83,7 @@ public class TestUploadSchema implements CategorizedTestCase {
       fo.close();
     }
 
-    RestTemplate template = RestTemplateBuilder.create();
+    RestOperations template = RestTemplateBuilder.create();
 
     MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
     for (int i = 0; i < fileNum; i++) {
@@ -111,7 +111,7 @@ public class TestUploadSchema implements 
CategorizedTestCase {
   }
 
   private void testUploadFileAndAttribute() throws Exception {
-    RestTemplate template = RestTemplateBuilder.create();
+    RestOperations template = RestTemplateBuilder.create();
     Map<String, Object> map = new HashMap<>();
     String message = "hi";
     File file = File.createTempFile("file", ".txt");
@@ -127,7 +127,7 @@ public class TestUploadSchema implements 
CategorizedTestCase {
   }
 
   private void testUploadFileRequestPartAttribute() throws Exception {
-    RestTemplate template = RestTemplateBuilder.create();
+    RestOperations template = RestTemplateBuilder.create();
     Map<String, Object> map = new HashMap<>();
     String message = "hi";
     File file = File.createTempFile("file", ".txt");
diff --git 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestWeakSpringmvc.java
 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestWeakSpringmvc.java
index 132568d0d..b6d6e7680 100644
--- 
a/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestWeakSpringmvc.java
+++ 
b/demo/demo-springmvc/springmvc-client/src/main/java/org/apache/servicecomb/demo/springmvc/client/TestWeakSpringmvc.java
@@ -32,7 +32,7 @@ import org.apache.servicecomb.provider.pojo.RpcReference;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 
@@ -118,7 +118,7 @@ public class TestWeakSpringmvc implements 
CategorizedTestCase {
   @RpcReference(microserviceName = 
"${servicecomb.service.application}:springmvc", schemaId = "weakSpringmvc")
   private SpecialNameModelInf specialNameModelInfWithAppId;
 
-  private RestTemplate restTemplate = RestTemplateBuilder.create();
+  private RestOperations restTemplate = RestTemplateBuilder.create();
 
   @Override
   public void testRestTransport() throws Exception {
diff --git 
a/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-client/src/main/java/org/apache/servicecomb/demo/zeroconfig/client/GovernanceEndpoint.java
 
b/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-client/src/main/java/org/apache/servicecomb/demo/zeroconfig/client/GovernanceEndpoint.java
index 638809270..574e0a4f6 100644
--- 
a/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-client/src/main/java/org/apache/servicecomb/demo/zeroconfig/client/GovernanceEndpoint.java
+++ 
b/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-client/src/main/java/org/apache/servicecomb/demo/zeroconfig/client/GovernanceEndpoint.java
@@ -17,22 +17,22 @@
 
 package org.apache.servicecomb.demo.zeroconfig.client;
 
-import jakarta.ws.rs.core.Response.Status;
-
 import org.apache.servicecomb.provider.rest.common.RestSchema;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
+
+import jakarta.ws.rs.core.Response.Status;
 
 @RestSchema(schemaId = "GovernanceEndpoint")
 @RequestMapping("/governance")
 public class GovernanceEndpoint {
   private static final String SERVER = 
"servicecomb://demo-zeroconfig-registry-server";
 
-  private RestTemplate restTemplate = RestTemplateBuilder.create();
+  private RestOperations restTemplate = RestTemplateBuilder.create();
 
   private int count = 0;
 
diff --git 
a/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-tests/src/main/java/org/apache/servicecomb/demo/zeroconfig/tests/GovernanceTest.java
 
b/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-tests/src/main/java/org/apache/servicecomb/demo/zeroconfig/tests/GovernanceTest.java
index 185fd3a89..24899c822 100644
--- 
a/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-tests/src/main/java/org/apache/servicecomb/demo/zeroconfig/tests/GovernanceTest.java
+++ 
b/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-tests/src/main/java/org/apache/servicecomb/demo/zeroconfig/tests/GovernanceTest.java
@@ -26,13 +26,13 @@ import org.apache.servicecomb.demo.CategorizedTestCase;
 import org.apache.servicecomb.demo.TestMgr;
 import org.apache.servicecomb.provider.springmvc.reference.RestTemplateBuilder;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Component
 public class GovernanceTest implements CategorizedTestCase {
   String url = "servicecomb://demo-zeroconfig-registry-client/governance";
 
-  RestTemplate template = RestTemplateBuilder.create();
+  RestOperations template = RestTemplateBuilder.create();
 
   @Override
   public void testRestTransport() throws Exception {
diff --git 
a/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-tests/src/main/java/org/apache/servicecomb/demo/zeroconfig/tests/ServerTest.java
 
b/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-tests/src/main/java/org/apache/servicecomb/demo/zeroconfig/tests/ServerTest.java
index 0534c6969..767f43ff7 100644
--- 
a/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-tests/src/main/java/org/apache/servicecomb/demo/zeroconfig/tests/ServerTest.java
+++ 
b/demo/demo-zeroconfig-registry/demo-zeroconfig-registry-tests/src/main/java/org/apache/servicecomb/demo/zeroconfig/tests/ServerTest.java
@@ -34,14 +34,14 @@ import org.springframework.http.RequestEntity;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.util.MultiValueMap;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 import io.vertx.core.json.JsonObject;
 
 @Component
 public class ServerTest implements CategorizedTestCase {
 
-  RestTemplate template = RestTemplateBuilder.create();
+  RestOperations template = RestTemplateBuilder.create();
 
   @Override
   public void testRestTransport() throws Exception {
diff --git 
a/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/RestTemplateBuilder.java
 
b/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/RestTemplateBuilder.java
index b77f28cfd..f8a5ceab1 100644
--- 
a/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/RestTemplateBuilder.java
+++ 
b/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/RestTemplateBuilder.java
@@ -17,7 +17,7 @@
 
 package org.apache.servicecomb.provider.springmvc.reference;
 
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 public final class RestTemplateBuilder {
   private static final RestTemplateWrapper wrapper = new RestTemplateWrapper();
@@ -25,7 +25,7 @@ public final class RestTemplateBuilder {
   private RestTemplateBuilder() {
   }
 
-  public static RestTemplate create() {
+  public static RestOperations create() {
     return wrapper;
   }
 
diff --git 
a/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/RestTemplateWrapper.java
 
b/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/RestTemplateWrapper.java
index 6d50d9ffd..e91cfb68a 100644
--- 
a/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/RestTemplateWrapper.java
+++ 
b/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/RestTemplateWrapper.java
@@ -40,9 +40,8 @@ import org.springframework.web.client.RestTemplate;
 import org.springframework.web.util.UriTemplateHandler;
 
 /**
- * 用于同时支持cse调用和非cse调用
+ * Wrapper class to support java chassis invocation and non java chassis 
invocation.
  */
-// TODO: 2017/7/1 what we want to expose is RestOperations instead, since some 
RestTemplate methods are not to be called by users
 class RestTemplateWrapper extends RestTemplate {
   private final List<AcceptableRestTemplate> acceptableRestTemplates = new 
ArrayList<>();
 
diff --git 
a/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/ServiceCombRestTemplateConfig.java
 
b/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/ServiceCombRestTemplateConfig.java
index 506eb1b6d..f250b9f20 100644
--- 
a/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/ServiceCombRestTemplateConfig.java
+++ 
b/providers/provider-springmvc/src/main/java/org/apache/servicecomb/provider/springmvc/reference/ServiceCombRestTemplateConfig.java
@@ -19,12 +19,12 @@ package org.apache.servicecomb.provider.springmvc.reference;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 @Configuration
 class ServiceCombRestTemplateConfig {
   @Bean
-  RestTemplate restTemplate() {
+  RestOperations restTemplate() {
     return RestTemplateBuilder.create();
   }
 }
diff --git 
a/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/ServiceCombRestTemplateConfigTest.java
 
b/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/ServiceCombRestTemplateConfigTest.java
index 430f47d56..c250b5841 100644
--- 
a/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/ServiceCombRestTemplateConfigTest.java
+++ 
b/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/ServiceCombRestTemplateConfigTest.java
@@ -21,7 +21,7 @@ import static org.hamcrest.core.IsInstanceOf.instanceOf;
 
 import org.hamcrest.MatcherAssert;
 import org.junit.jupiter.api.Test;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 public class ServiceCombRestTemplateConfigTest {
 
@@ -29,7 +29,7 @@ public class ServiceCombRestTemplateConfigTest {
 
   @Test
   public void exposesServiceCombRestTemplate() {
-    RestTemplate restTemplate = config.restTemplate();
+    RestOperations restTemplate = config.restTemplate();
 
     MatcherAssert.assertThat(restTemplate, 
instanceOf(RestTemplateWrapper.class));
   }
diff --git 
a/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/TestRestTemplateBuilder.java
 
b/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/TestRestTemplateBuilder.java
index 469dd36cc..0bd76111b 100644
--- 
a/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/TestRestTemplateBuilder.java
+++ 
b/providers/provider-springmvc/src/test/java/org/apache/servicecomb/provider/springmvc/reference/TestRestTemplateBuilder.java
@@ -24,7 +24,7 @@ import java.net.URI;
 
 import org.hamcrest.MatcherAssert;
 import org.junit.jupiter.api.Test;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.web.client.RestOperations;
 
 import com.seanyinx.github.unit.scaffolding.Randomness;
 
@@ -51,7 +51,7 @@ public class TestRestTemplateBuilder {
   public void addsRestTemplateToWrapper() {
     RestTemplateBuilder.addAcceptableRestTemplate(1, underlying);
 
-    RestTemplate restTemplate = RestTemplateBuilder.create();
+    RestOperations restTemplate = RestTemplateBuilder.create();
 
     MatcherAssert.assertThat(restTemplate, 
instanceOf(RestTemplateWrapper.class));
 

Reply via email to