diff --git a/basic/apis/consumer-api/pom.xml b/basic/apis/consumer-api/pom.xml
new file mode 100644
index 0000000..4faa106
--- /dev/null
+++ b/basic/apis/consumer-api/pom.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.servicecomb.samples</groupId>
+    <artifactId>basic-apis</artifactId>
+    <version>3.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>basic-consumer-api</artifactId>
+  <packaging>jar</packaging>
+
+</project>
\ No newline at end of file
diff --git a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java b/basic/apis/consumer-api/src/main/java/org/apache/servicecomb/samples/api/ConsumerService.java
similarity index 67%
copy from basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java
copy to basic/apis/consumer-api/src/main/java/org/apache/servicecomb/samples/api/ConsumerService.java
index a404a56..e5e8830 100644
--- a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java
+++ b/basic/apis/consumer-api/src/main/java/org/apache/servicecomb/samples/api/ConsumerService.java
@@ -15,10 +15,17 @@
  * limitations under the License.
  */
 
-package org.apache.servicecomb.samples;
+package org.apache.servicecomb.samples.api;
 
-public interface ProviderService {
-  String sayHello(String name);
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 
+@RequestMapping(path = "/")
+public interface ConsumerService {
+  @GetMapping("/sayHello")
+  String sayHello(@RequestParam("name") String name);
+
+  @GetMapping("/exampleConfig")
   String exampleConfig();
 }
diff --git a/basic/apis/pom.xml b/basic/apis/pom.xml
new file mode 100644
index 0000000..97b05b4
--- /dev/null
+++ b/basic/apis/pom.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.servicecomb.samples</groupId>
+    <artifactId>basic-application</artifactId>
+    <version>3.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>basic-apis</artifactId>
+  <packaging>pom</packaging>
+
+  <modules>
+    <module>provider-api</module>
+    <module>consumer-api</module>
+  </modules>
+
+</project>
\ No newline at end of file
diff --git a/basic/apis/provider-api/pom.xml b/basic/apis/provider-api/pom.xml
new file mode 100644
index 0000000..a643892
--- /dev/null
+++ b/basic/apis/provider-api/pom.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.servicecomb.samples</groupId>
+    <artifactId>basic-apis</artifactId>
+    <version>3.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>basic-provider-api</artifactId>
+  <packaging>jar</packaging>
+
+</project>
\ No newline at end of file
diff --git a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java b/basic/apis/provider-api/src/main/java/org/apache/servicecomb/samples/api/ProviderService.java
similarity index 69%
rename from basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java
rename to basic/apis/provider-api/src/main/java/org/apache/servicecomb/samples/api/ProviderService.java
index a404a56..88155a5 100644
--- a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java
+++ b/basic/apis/provider-api/src/main/java/org/apache/servicecomb/samples/api/ProviderService.java
@@ -15,10 +15,17 @@
  * limitations under the License.
  */
 
-package org.apache.servicecomb.samples;
+package org.apache.servicecomb.samples.api;
 
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@RequestMapping(path = "/provider")
 public interface ProviderService {
-  String sayHello(String name);
+  @GetMapping("/sayHello")
+  String sayHello(@RequestParam("name") String name);
 
+  @GetMapping("/exampleConfig")
   String exampleConfig();
 }
diff --git a/basic/consumer/pom.xml b/basic/consumer/pom.xml
index 53f15b2..0ed7959 100644
--- a/basic/consumer/pom.xml
+++ b/basic/consumer/pom.xml
@@ -33,6 +33,16 @@
       <groupId>org.apache.servicecomb</groupId>
       <artifactId>java-chassis-spring-boot-starter-standalone</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb.samples</groupId>
+      <artifactId>basic-consumer-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb.samples</groupId>
+      <artifactId>basic-provider-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerController.java b/basic/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerController.java
index 9dfa17a..84c5ce9 100644
--- a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerController.java
+++ b/basic/consumer/src/main/java/org/apache/servicecomb/samples/ConsumerController.java
@@ -17,25 +17,26 @@
 
 package org.apache.servicecomb.samples;
 
-import org.apache.servicecomb.provider.pojo.RpcReference;
 import org.apache.servicecomb.provider.rest.common.RestSchema;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.apache.servicecomb.samples.api.ConsumerService;
+import org.apache.servicecomb.samples.api.ProviderService;
+import org.springframework.beans.factory.annotation.Autowired;
 
-@RestSchema(schemaId = "ConsumerController")
-@RequestMapping(path = "/")
-public class ConsumerController {
-  @RpcReference(schemaId = "ProviderController", microserviceName = "provider")
+@RestSchema(schemaId = "ConsumerController", schemaInterface = ConsumerService.class)
+public class ConsumerController implements ConsumerService {
   private ProviderService providerService;
 
-  // consumer service which delegate the implementation to provider service.
-  @GetMapping("/sayHello")
-  public String sayHello(@RequestParam("name") String name) {
+  @Autowired
+  public void setProviderService(ProviderService providerService) {
+    this.providerService = providerService;
+  }
+
+  @Override
+  public String sayHello(String name) {
     return providerService.sayHello(name);
   }
 
-  @GetMapping("/exampleConfig")
+  @Override
   public String exampleConfig() {
     return providerService.exampleConfig();
   }
diff --git a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java b/basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderServiceConfiguration.java
similarity index 66%
copy from basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java
copy to basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderServiceConfiguration.java
index a404a56..851b8e9 100644
--- a/basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderService.java
+++ b/basic/consumer/src/main/java/org/apache/servicecomb/samples/ProviderServiceConfiguration.java
@@ -17,8 +17,15 @@
 
 package org.apache.servicecomb.samples;
 
-public interface ProviderService {
-  String sayHello(String name);
+import org.apache.servicecomb.provider.pojo.Invoker;
+import org.apache.servicecomb.samples.api.ProviderService;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
 
-  String exampleConfig();
+@Configuration
+public class ProviderServiceConfiguration {
+  @Bean
+  public ProviderService providerService() {
+    return Invoker.createProxy("provider", "ProviderController", ProviderService.class);
+  }
 }
diff --git a/basic/pom.xml b/basic/pom.xml
index bd69985..18290fb 100644
--- a/basic/pom.xml
+++ b/basic/pom.xml
@@ -27,7 +27,7 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <servicecomb.version>3.0.0</servicecomb.version>
+    <servicecomb.version>3.1.0</servicecomb.version>
     <spring-boot-maven-plugin.version>3.1.3</spring-boot-maven-plugin.version>
     <maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version>
   </properties>
@@ -102,6 +102,7 @@
   </profiles>
 
   <modules>
+    <module>apis</module>
     <module>provider</module>
     <module>consumer</module>
     <module>gateway</module>
diff --git a/basic/provider/pom.xml b/basic/provider/pom.xml
index b02dfd0..3140127 100644
--- a/basic/provider/pom.xml
+++ b/basic/provider/pom.xml
@@ -37,6 +37,11 @@
       <groupId>org.apache.servicecomb</groupId>
       <artifactId>java-chassis-spring-boot-starter-standalone</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb.samples</groupId>
+      <artifactId>basic-provider-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/basic/provider/src/main/java/org/apache/servicecomb/samples/ProviderController.java b/basic/provider/src/main/java/org/apache/servicecomb/samples/ProviderController.java
index 2db6ccb..15d8f70 100644
--- a/basic/provider/src/main/java/org/apache/servicecomb/samples/ProviderController.java
+++ b/basic/provider/src/main/java/org/apache/servicecomb/samples/ProviderController.java
@@ -19,14 +19,11 @@
 
 import org.apache.servicecomb.config.DynamicProperties;
 import org.apache.servicecomb.provider.rest.common.RestSchema;
+import org.apache.servicecomb.samples.api.ProviderService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
 
-@RestSchema(schemaId = "ProviderController")
-@RequestMapping(path = "/")
-public class ProviderController {
+@RestSchema(schemaId = "ProviderController", schemaInterface = ProviderService.class)
+public class ProviderController implements ProviderService {
   private DynamicProperties dynamicProperties;
 
   private String example;
@@ -38,13 +35,12 @@
         value -> this.example = value, "not set");
   }
 
-  // a very simple service to echo the request parameter
-  @GetMapping("/sayHello")
-  public String sayHello(@RequestParam("name") String name) {
+  @Override
+  public String sayHello(String name) {
     return "Hello " + name;
   }
 
-  @GetMapping("/exampleConfig")
+  @Override
   public String exampleConfig() {
     return example;
   }
