diff --git a/NOTICE b/NOTICE
index 070eb57..e02ff73 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,5 +1,5 @@
 Apache Dubbo
-Copyright 2018-2019 The Apache Software Foundation
+Copyright 2018-2020 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
\ No newline at end of file
diff --git a/README.md b/README.md
index 924f308..0cd3254 100644
--- a/README.md
+++ b/README.md
@@ -18,8 +18,8 @@
 You can introduce the latest `dubbo-spring-boot-starter` to your project by adding the following dependency to your pom.xml
 ```xml
 <properties>
-    <spring-boot.version>2.2.6.RELEASE</spring-boot.version>
-    <dubbo.version>2.7.6</dubbo.version>
+    <spring-boot.version>2.3.0.RELEASE</spring-boot.version>
+    <dubbo.version>2.7.7</dubbo.version>
 </properties>
     
 <dependencyManagement>
@@ -50,7 +50,7 @@
     <dependency>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-spring-boot-starter</artifactId>
-        <version>2.7.6</version>
+        <version>2.7.7</version>
     </dependency>    
 </dependencies>
 ```
@@ -86,7 +86,7 @@
 
 ### Build from Source
 
-If you'd like to attempt to experience latest features, you also can build from source as follow:
+If you'd like to attempt to experience the latest features, you also can build from the source code as follow:
 
 1. Maven install current project in your local repository.
 > Maven install = `mvn install`
@@ -150,7 +150,7 @@
     # Spring boot application
     spring.application.name=dubbo-auto-configuration-provider-demo
     # Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service
-    dubbo.scan.base-packages=org.apache.dubbo.spring.boot.demo.provider.service
+    dubbo.scan.base-packages=org.apache.dubbo.spring.boot.sample.provider.service
 
     # Dubbo Application
     ## The default value of dubbo.application.name is ${spring.application.name}
diff --git a/README_CN.md b/README_CN.md
index bdb80e3..8d7b3eb 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -21,8 +21,8 @@
 您可以为您的工程引入最新 `dubbo-spring-boot-starter` 的发布，增加以下依赖到工程的 `pom.xml` 文件中：
 ```xml
 <properties>
-    <spring-boot.version>2.2.6.RELEASE</spring-boot.version>
-    <dubbo.version>2.7.6</dubbo.version>
+    <spring-boot.version>2.3.0.RELEASE</spring-boot.version>
+    <dubbo.version>2.7.7</dubbo.version>
 </properties>
     
 <dependencyManagement>
@@ -72,7 +72,7 @@
     <dependency>
         <groupId>org.apache.dubbo</groupId>
         <artifactId>dubbo-spring-boot-starter</artifactId>
-        <version>2.7.6</version>
+        <version>2.7.7</version>
     </dependency>
     
     <dependency>
@@ -177,7 +177,7 @@
     # Spring boot application
     spring.application.name=dubbo-auto-configuration-provider-demo
     # Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service
-    dubbo.scan.base-packages=org.apache.dubbo.spring.boot.demo.provider.service
+    dubbo.scan.base-packages=org.apache.dubbo.spring.boot.sample.provider.service
 
     # Dubbo Application
     ## The default value of dubbo.application.name is ${spring.application.name}
@@ -244,9 +244,9 @@
 
 如果您在使用 Dubbo Spring Boot 中遇到任何问题或者有什么建议? 我们非常需要您的支持!
 
-- 如果您需要升级版本，请提前阅读[发布公告](https://github.com/apache/dubbo-spring-boot-project/releases)，了解最新的特性和问题修复。
+- 如果您需要升级版本，请提前阅读[发布公告](https://github.com/dubbo/dubbo-spring-boot-project/releases)，了解最新的特性和问题修复。
 - 如果您遇到任何问题 ，您可以订阅 [Dubbo 用户邮件列表](mailto:dubbo+subscribe@googlegroups.com)。
-- 问题反馈，您可以在 [issues](https://github.com/apache/dubbo-spring-boot-project/issues) 提出您遇到的使用问题。
+- 问题反馈，您可以在 [issues](https://github.com/dubbo/dubbo-spring-boot-project/issues) 提出您遇到的使用问题。
 
 
 
diff --git a/dubbo-spring-boot-actuator/README.md b/dubbo-spring-boot-actuator/README.md
index 754820a..b501b9c 100644
--- a/dubbo-spring-boot-actuator/README.md
+++ b/dubbo-spring-boot-actuator/README.md
@@ -201,7 +201,7 @@
   "dubbo.protocol.port": "12345",
   "dubbo.registry.address": "N/A",
   "dubbo.registry.id": "my-registry",
-  "dubbo.scan.basePackages": "org.apache.dubbo.spring.boot.demo.provider.service"
+  "dubbo.scan.basePackages": "org.apache.dubbo.spring.boot.sample.provider.service"
 }
 ```
 
@@ -217,7 +217,7 @@
 
 ```json
 {
-  "ServiceBean@org.apache.dubbo.spring.boot.demo.api.DemoService#defaultDemoService": {
+  "ServiceBean@org.apache.dubbo.spring.boot.sample.api.DemoService#defaultDemoService": {
     "accesslog": null,
     "actives": null,
     "cache": null,
@@ -233,9 +233,9 @@
     "filter": "",
     "generic": "false",
     "group": null,
-    "id": "org.apache.dubbo.spring.boot.demo.api.DemoService",
-    "interface": "org.apache.dubbo.spring.boot.demo.api.DemoService",
-    "interfaceClass": "org.apache.dubbo.spring.boot.demo.api.DemoService",
+    "id": "org.apache.dubbo.spring.boot.sample.api.DemoService",
+    "interface": "org.apache.dubbo.spring.boot.sample.api.DemoService",
+    "interfaceClass": "org.apache.dubbo.spring.boot.sample.api.DemoService",
     "layer": null,
     "listener": "",
     "loadbalance": null,
@@ -245,7 +245,7 @@
     "onconnect": null,
     "ondisconnect": null,
     "owner": null,
-    "path": "org.apache.dubbo.spring.boot.demo.api.DemoService",
+    "path": "org.apache.dubbo.spring.boot.sample.api.DemoService",
     "proxy": null,
     "retries": null,
     "scope": null,
@@ -254,7 +254,7 @@
     "timeout": null,
     "token": null,
     "unexported": false,
-    "uniqueServiceName": "org.apache.dubbo.spring.boot.demo.api.DemoService:1.0.0",
+    "uniqueServiceName": "org.apache.dubbo.spring.boot.sample.api.DemoService:1.0.0",
     "validation": null,
     "version": "1.0.0",
     "warmup": null,
@@ -274,7 +274,7 @@
 
 ```json
 {
-  "private org.apache.dubbo.spring.boot.demo.api.DemoService org.apache.dubbo.spring.boot.demo.consumer.controller.DemoConsumerController.demoService": {
+  "private org.apache.dubbo.spring.boot.sample.api.DemoService org.apache.dubbo.spring.boot.sample.consumer.controller.DemoConsumerController.demoService": {
     "actives": null,
     "cache": null,
     "callbacks": null,
@@ -285,9 +285,9 @@
     "filter": "",
     "generic": null,
     "group": null,
-    "id": "org.apache.dubbo.spring.boot.demo.api.DemoService",
-    "interface": "org.apache.dubbo.spring.boot.demo.api.DemoService",
-    "interfaceClass": "org.apache.dubbo.spring.boot.demo.api.DemoService",
+    "id": "org.apache.dubbo.spring.boot.sample.api.DemoService",
+    "interface": "org.apache.dubbo.spring.boot.sample.api.DemoService",
+    "interfaceClass": "org.apache.dubbo.spring.boot.sample.api.DemoService",
     "layer": null,
     "lazy": null,
     "listener": "",
@@ -295,7 +295,7 @@
     "local": null,
     "merger": null,
     "mock": null,
-    "objectType": "org.apache.dubbo.spring.boot.demo.api.DemoService",
+    "objectType": "org.apache.dubbo.spring.boot.sample.api.DemoService",
     "onconnect": null,
     "ondisconnect": null,
     "owner": null,
@@ -310,7 +310,7 @@
     "stub": null,
     "stubevent": null,
     "timeout": null,
-    "uniqueServiceName": "org.apache.dubbo.spring.boot.demo.api.DemoService:1.0.0",
+    "uniqueServiceName": "org.apache.dubbo.spring.boot.sample.api.DemoService:1.0.0",
     "url": "dubbo://localhost:12345",
     "validation": null,
     "version": "1.0.0",
diff --git a/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/autoconfigure/DubboEndpointAnnotationAutoConfiguration.java b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/autoconfigure/DubboEndpointAnnotationAutoConfiguration.java
index 3b1d9cf..6db22db 100644
--- a/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/autoconfigure/DubboEndpointAnnotationAutoConfiguration.java
+++ b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/autoconfigure/DubboEndpointAnnotationAutoConfiguration.java
@@ -22,7 +22,8 @@
 import org.apache.dubbo.spring.boot.actuate.endpoint.DubboReferencesMetadataEndpoint;
 import org.apache.dubbo.spring.boot.actuate.endpoint.DubboServicesMetadataEndpoint;
 import org.apache.dubbo.spring.boot.actuate.endpoint.DubboShutdownEndpoint;
-import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint;
+import org.apache.dubbo.spring.boot.actuate.endpoint.condition.CompatibleConditionalOnEnabledEndpoint;
+
 import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.context.annotation.Bean;
@@ -44,42 +45,42 @@
 
     @Bean
     @ConditionalOnMissingBean
-    @ConditionalOnEnabledEndpoint
+    @CompatibleConditionalOnEnabledEndpoint
     public DubboMetadataEndpoint dubboEndpoint() {
         return new DubboMetadataEndpoint();
     }
 
     @Bean
     @ConditionalOnMissingBean
-    @ConditionalOnEnabledEndpoint
+    @CompatibleConditionalOnEnabledEndpoint
     public DubboConfigsMetadataEndpoint dubboConfigsMetadataEndpoint() {
         return new DubboConfigsMetadataEndpoint();
     }
 
     @Bean
     @ConditionalOnMissingBean
-    @ConditionalOnEnabledEndpoint
+    @CompatibleConditionalOnEnabledEndpoint
     public DubboPropertiesMetadataEndpoint dubboPropertiesEndpoint() {
         return new DubboPropertiesMetadataEndpoint();
     }
 
     @Bean
     @ConditionalOnMissingBean
-    @ConditionalOnEnabledEndpoint
+    @CompatibleConditionalOnEnabledEndpoint
     public DubboReferencesMetadataEndpoint dubboReferencesMetadataEndpoint() {
         return new DubboReferencesMetadataEndpoint();
     }
 
     @Bean
     @ConditionalOnMissingBean
-    @ConditionalOnEnabledEndpoint
+    @CompatibleConditionalOnEnabledEndpoint
     public DubboServicesMetadataEndpoint dubboServicesMetadataEndpoint() {
         return new DubboServicesMetadataEndpoint();
     }
 
     @Bean
     @ConditionalOnMissingBean
-    @ConditionalOnEnabledEndpoint
+    @CompatibleConditionalOnEnabledEndpoint
     public DubboShutdownEndpoint dubboShutdownEndpoint() {
         return new DubboShutdownEndpoint();
     }
diff --git a/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboConfigsMetadataEndpoint.java b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboConfigsMetadataEndpoint.java
index 0f57fa7..77b1e20 100644
--- a/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboConfigsMetadataEndpoint.java
+++ b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboConfigsMetadataEndpoint.java
@@ -18,6 +18,7 @@
 
 import org.apache.dubbo.spring.boot.actuate.endpoint.metadata.AbstractDubboMetadata;
 import org.apache.dubbo.spring.boot.actuate.endpoint.metadata.DubboConfigsMetadata;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
 import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
diff --git a/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboMetadataEndpoint.java b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboMetadataEndpoint.java
index d7d4e58..fb35b7f 100644
--- a/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboMetadataEndpoint.java
+++ b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboMetadataEndpoint.java
@@ -17,6 +17,7 @@
 package org.apache.dubbo.spring.boot.actuate.endpoint;
 
 import org.apache.dubbo.spring.boot.actuate.endpoint.metadata.DubboMetadata;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
 import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
diff --git a/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboPropertiesMetadataEndpoint.java b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboPropertiesMetadataEndpoint.java
index 6084d3f..8105e33 100644
--- a/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboPropertiesMetadataEndpoint.java
+++ b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboPropertiesMetadataEndpoint.java
@@ -18,6 +18,7 @@
 
 import org.apache.dubbo.spring.boot.actuate.endpoint.metadata.AbstractDubboMetadata;
 import org.apache.dubbo.spring.boot.actuate.endpoint.metadata.DubboPropertiesMetadata;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
 import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
diff --git a/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboReferencesMetadataEndpoint.java b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboReferencesMetadataEndpoint.java
index 54de83c..f2497da 100644
--- a/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboReferencesMetadataEndpoint.java
+++ b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboReferencesMetadataEndpoint.java
@@ -16,9 +16,10 @@
  */
 package org.apache.dubbo.spring.boot.actuate.endpoint;
 
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.spring.boot.actuate.endpoint.metadata.AbstractDubboMetadata;
 import org.apache.dubbo.spring.boot.actuate.endpoint.metadata.DubboReferencesMetadata;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
 import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
@@ -26,7 +27,7 @@
 import java.util.Map;
 
 /**
- * Dubbo {@link Reference} Metadata {@link Endpoint}
+ * {@link DubboReference} Metadata {@link Endpoint}
  *
  * @since 2.7.0
  */
diff --git a/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboServicesMetadataEndpoint.java b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboServicesMetadataEndpoint.java
index e92f011..845dbc1 100644
--- a/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboServicesMetadataEndpoint.java
+++ b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboServicesMetadataEndpoint.java
@@ -16,9 +16,10 @@
  */
 package org.apache.dubbo.spring.boot.actuate.endpoint;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.spring.boot.actuate.endpoint.metadata.AbstractDubboMetadata;
 import org.apache.dubbo.spring.boot.actuate.endpoint.metadata.DubboServicesMetadata;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
 import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
@@ -26,7 +27,7 @@
 import java.util.Map;
 
 /**
- * Dubbo {@link Service} Metadata {@link Endpoint}
+ * {@link DubboService} Metadata {@link Endpoint}
  *
  * @since 2.7.0
  */
diff --git a/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboShutdownEndpoint.java b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboShutdownEndpoint.java
index b372472..9565e84 100644
--- a/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboShutdownEndpoint.java
+++ b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/DubboShutdownEndpoint.java
@@ -18,6 +18,7 @@
 
 import org.apache.dubbo.spring.boot.actuate.endpoint.metadata.AbstractDubboMetadata;
 import org.apache.dubbo.spring.boot.actuate.endpoint.metadata.DubboShutdownMetadata;
+
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
 import org.springframework.boot.actuate.endpoint.annotation.WriteOperation;
diff --git a/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/condition/CompatibleConditionalOnEnabledEndpoint.java b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/condition/CompatibleConditionalOnEnabledEndpoint.java
new file mode 100644
index 0000000..3c1bc1e
--- /dev/null
+++ b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/condition/CompatibleConditionalOnEnabledEndpoint.java
@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+package org.apache.dubbo.spring.boot.actuate.endpoint.condition;
+
+import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
+import org.springframework.boot.actuate.endpoint.annotation.EndpointExtension;
+import org.springframework.context.annotation.Conditional;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * {@link Conditional} that checks whether or not an endpoint is enabled, which is compatible with
+ * org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint ([2.0.x, 2.2.x])
+ * org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnAvailableEndpoint
+ *
+ * @see CompatibleOnEnabledEndpointCondition
+ * @since 2.7.7
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.METHOD, ElementType.TYPE})
+@Documented
+@Conditional(CompatibleOnEnabledEndpointCondition.class)
+public @interface CompatibleConditionalOnEnabledEndpoint {
+
+    /**
+     * The endpoint type that should be checked. Inferred when the return type of the
+     * {@code @Bean} method is either an {@link Endpoint @Endpoint} or an
+     * {@link EndpointExtension @EndpointExtension}.
+     *
+     * @return the endpoint type to check
+     */
+    Class<?> endpoint() default Void.class;
+}
diff --git a/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/condition/CompatibleOnEnabledEndpointCondition.java b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/condition/CompatibleOnEnabledEndpointCondition.java
new file mode 100644
index 0000000..ebac25e
--- /dev/null
+++ b/dubbo-spring-boot-actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/condition/CompatibleOnEnabledEndpointCondition.java
@@ -0,0 +1,69 @@
+/*
+ * 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.
+ */
+package org.apache.dubbo.spring.boot.actuate.endpoint.condition;
+
+import org.springframework.beans.BeanUtils;
+import org.springframework.context.annotation.Condition;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.core.type.AnnotatedTypeMetadata;
+import org.springframework.util.ClassUtils;
+
+import java.util.stream.Stream;
+
+/**
+ * {@link Conditional} that checks whether or not an endpoint is enabled, which is compatible with
+ * org.springframework.boot.actuate.autoconfigure.endpoint.condition.OnEnabledEndpointCondition
+ * and org.springframework.boot.actuate.autoconfigure.endpoint.condition.OnAvailableEndpointCondition
+ *
+ * @see CompatibleConditionalOnEnabledEndpoint
+ * @since 2.7.7
+ */
+class CompatibleOnEnabledEndpointCondition implements Condition {
+
+    static String[] CONDITION_CLASS_NAMES = {
+            "org.springframework.boot.actuate.autoconfigure.endpoint.condition.OnAvailableEndpointCondition", // 2.2.0+
+            "org.springframework.boot.actuate.autoconfigure.endpoint.condition.OnEnabledEndpointCondition" // [2.0.0 , 2.2.x]
+    };
+
+
+    @Override
+    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
+        ClassLoader classLoader = context.getClassLoader();
+
+        Condition condition = Stream.of(CONDITION_CLASS_NAMES)                         // Iterate class names
+                .filter(className -> ClassUtils.isPresent(className, classLoader))     // Search class existing or not by name
+                .findFirst()                                                           // Find the first candidate
+                .map(className -> ClassUtils.resolveClassName(className, classLoader)) // Resolve class name to Class
+                .filter(Condition.class::isAssignableFrom)                             // Accept the Condition implementation
+                .map(BeanUtils::instantiateClass)                                      // Instantiate Class to be instance
+                .map(Condition.class::cast)                                            // Cast the instance to be Condition one
+                .orElse(NegativeCondition.INSTANCE);                                   // Or else get a negative condition
+
+        return condition.matches(context, metadata);
+    }
+
+    private static class NegativeCondition implements Condition {
+
+        static final NegativeCondition INSTANCE = new NegativeCondition();
+
+        @Override
+        public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
+            return false;
+        }
+    }
+}
diff --git a/dubbo-spring-boot-actuator/src/test/java/org/apache/dubbo/spring/boot/actuate/autoconfigure/DubboEndpointAnnotationAutoConfigurationTest.java b/dubbo-spring-boot-actuator/src/test/java/org/apache/dubbo/spring/boot/actuate/autoconfigure/DubboEndpointAnnotationAutoConfigurationTest.java
index 1ccb08e..51f4e03 100644
--- a/dubbo-spring-boot-actuator/src/test/java/org/apache/dubbo/spring/boot/actuate/autoconfigure/DubboEndpointAnnotationAutoConfigurationTest.java
+++ b/dubbo-spring-boot-actuator/src/test/java/org/apache/dubbo/spring/boot/actuate/autoconfigure/DubboEndpointAnnotationAutoConfigurationTest.java
@@ -16,7 +16,7 @@
  */
 package org.apache.dubbo.spring.boot.actuate.autoconfigure;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.spring.boot.actuate.endpoint.DubboConfigsMetadataEndpoint;
 import org.apache.dubbo.spring.boot.actuate.endpoint.DubboMetadataEndpoint;
 import org.apache.dubbo.spring.boot.actuate.endpoint.DubboPropertiesMetadataEndpoint;
@@ -214,7 +214,7 @@
         String sayHello(String name);
     }
 
-    @Service(
+    @DubboService(
             version = "${dubbo.service.version}",
             application = "${dubbo.application.id}",
             protocol = "${dubbo.protocol.id}",
diff --git a/dubbo-spring-boot-compatible/actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/metadata/DubboReferencesMetadata.java b/dubbo-spring-boot-compatible/actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/metadata/DubboReferencesMetadata.java
index e389a6a..6087015 100644
--- a/dubbo-spring-boot-compatible/actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/metadata/DubboReferencesMetadata.java
+++ b/dubbo-spring-boot-compatible/actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/metadata/DubboReferencesMetadata.java
@@ -16,9 +16,10 @@
  */
 package org.apache.dubbo.spring.boot.actuate.endpoint.metadata;
 
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.spring.ReferenceBean;
 import org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor;
+
 import org.springframework.beans.factory.annotation.InjectionMetadata;
 import org.springframework.stereotype.Component;
 
@@ -26,7 +27,7 @@
 import java.util.Map;
 
 /**
- * Dubbo {@link Reference} Metadata
+ * {@link DubboReference} Metadata
  *
  * @since 2.7.0
  */
diff --git a/dubbo-spring-boot-compatible/actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/metadata/DubboServicesMetadata.java b/dubbo-spring-boot-compatible/actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/metadata/DubboServicesMetadata.java
index 7122e36..11ce4d5 100644
--- a/dubbo-spring-boot-compatible/actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/metadata/DubboServicesMetadata.java
+++ b/dubbo-spring-boot-compatible/actuator/src/main/java/org/apache/dubbo/spring/boot/actuate/endpoint/metadata/DubboServicesMetadata.java
@@ -16,15 +16,16 @@
  */
 package org.apache.dubbo.spring.boot.actuate.endpoint.metadata;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.config.spring.ServiceBean;
+
 import org.springframework.stereotype.Component;
 
 import java.util.LinkedHashMap;
 import java.util.Map;
 
 /**
- * Dubbo {@link Service} Metadata
+ *  {@link DubboService} Metadata
  *
  * @since 2.7.0
  */
diff --git a/dubbo-spring-boot-compatible/actuator/src/test/java/org/apache/dubbo/spring/boot/actuate/autoconfigure/DubboEndpointAutoConfigurationTest.java b/dubbo-spring-boot-compatible/actuator/src/test/java/org/apache/dubbo/spring/boot/actuate/autoconfigure/DubboEndpointAutoConfigurationTest.java
index a8278df..c4d62da 100644
--- a/dubbo-spring-boot-compatible/actuator/src/test/java/org/apache/dubbo/spring/boot/actuate/autoconfigure/DubboEndpointAutoConfigurationTest.java
+++ b/dubbo-spring-boot-compatible/actuator/src/test/java/org/apache/dubbo/spring/boot/actuate/autoconfigure/DubboEndpointAutoConfigurationTest.java
@@ -16,7 +16,7 @@
  */
 package org.apache.dubbo.spring.boot.actuate.autoconfigure;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.spring.boot.actuate.endpoint.DubboEndpoint;
 import org.apache.dubbo.spring.boot.actuate.endpoint.metadata.DubboConfigsMetadata;
 import org.apache.dubbo.spring.boot.actuate.endpoint.metadata.DubboPropertiesMetadata;
@@ -220,7 +220,7 @@
         String sayHello(String name);
     }
 
-    @Service(
+    @DubboService(
             version = "${dubbo.service.version}",
             application = "${dubbo.application.id}",
             protocol = "${dubbo.protocol.id}",
diff --git a/dubbo-spring-boot-compatible/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/autoconfigure/DubboAutoConfiguration.java b/dubbo-spring-boot-compatible/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/autoconfigure/DubboAutoConfiguration.java
index 82cce51..6f130e8 100644
--- a/dubbo-spring-boot-compatible/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/autoconfigure/DubboAutoConfiguration.java
+++ b/dubbo-spring-boot-compatible/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/autoconfigure/DubboAutoConfiguration.java
@@ -16,12 +16,14 @@
  */
 package org.apache.dubbo.spring.boot.autoconfigure;
 
-import org.apache.dubbo.config.annotation.Reference;
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor;
 import org.apache.dubbo.config.spring.beans.factory.annotation.ServiceAnnotationBeanPostProcessor;
+import org.apache.dubbo.config.spring.beans.factory.annotation.ServiceClassPostProcessor;
 import org.apache.dubbo.config.spring.context.annotation.DubboConfigConfiguration;
 import org.apache.dubbo.config.spring.context.annotation.EnableDubboConfig;
+import org.apache.dubbo.spring.boot.beans.factory.config.ServiceBeanIdConflictProcessor;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -50,9 +52,9 @@
 /**
  * Dubbo Auto {@link Configuration}
  *
- * @see Reference
- * @see Service
- * @see ServiceAnnotationBeanPostProcessor
+ * @see DubboReference
+ * @see DubboService
+ * @see ServiceClassPostProcessor
  * @see ReferenceAnnotationBeanPostProcessor
  * @since 2.7.0
  */
@@ -60,6 +62,7 @@
 @Configuration
 @AutoConfigureAfter(DubboRelaxedBindingAutoConfiguration.class)
 @EnableConfigurationProperties(DubboConfigurationProperties.class)
+@Import(ServiceBeanIdConflictProcessor.class)
 public class DubboAutoConfiguration {
 
     /**
diff --git a/dubbo-spring-boot-compatible/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/beans/factory/config/ServiceBeanIdConflictProcessor.java b/dubbo-spring-boot-compatible/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/beans/factory/config/ServiceBeanIdConflictProcessor.java
new file mode 100644
index 0000000..b6bf04b
--- /dev/null
+++ b/dubbo-spring-boot-compatible/autoconfigure/src/main/java/org/apache/dubbo/spring/boot/beans/factory/config/ServiceBeanIdConflictProcessor.java
@@ -0,0 +1,115 @@
+/*
+ * 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.
+ */
+package org.apache.dubbo.spring.boot.beans.factory.config;
+
+import org.apache.dubbo.config.ServiceConfig;
+import org.apache.dubbo.config.spring.ServiceBean;
+
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.DisposableBean;
+import org.springframework.beans.factory.support.MergedBeanDefinitionPostProcessor;
+import org.springframework.beans.factory.support.RootBeanDefinition;
+import org.springframework.context.annotation.CommonAnnotationBeanPostProcessor;
+import org.springframework.core.Ordered;
+import org.springframework.core.PriorityOrdered;
+
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+
+import static org.springframework.util.ClassUtils.getUserClass;
+import static org.springframework.util.ClassUtils.isAssignable;
+
+/**
+ * The post-processor for resolving the id conflict of {@link ServiceBean} when an interface is
+ * implemented by multiple services with different groups or versions that are exported on one provider
+ * <p>
+ * Current implementation is a temporary resolution, and will be removed in the future.
+ *
+ * @see CommonAnnotationBeanPostProcessor
+ * @since 2.7.7
+ * @deprecated
+ */
+public class ServiceBeanIdConflictProcessor implements MergedBeanDefinitionPostProcessor, DisposableBean, PriorityOrdered {
+
+    /**
+     * The key is the class names of interfaces that were exported by {@link ServiceBean}
+     * The value is bean names of {@link ServiceBean} or {@link ServiceConfig}.
+     */
+    private Map<String, String> interfaceNamesToBeanNames = new HashMap<>();
+
+    /**
+     * Holds the bean names of {@link ServiceBean} or {@link ServiceConfig}.
+     */
+    private Set<String> conflictedBeanNames = new LinkedHashSet<>();
+
+    @Override
+    public void postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName) {
+        // Get raw bean type
+        Class<?> rawBeanType = getUserClass(beanType);
+        if (isAssignable(ServiceConfig.class, rawBeanType)) { // ServiceConfig type or sub-type
+            String interfaceName = (String) beanDefinition.getPropertyValues().get("interface");
+            String mappedBeanName = interfaceNamesToBeanNames.putIfAbsent(interfaceName, beanName);
+            // If mapped bean name exists and does not equal current bean name
+            if (mappedBeanName != null && !mappedBeanName.equals(beanName)) {
+                // conflictedBeanNames will record current bean name.
+                conflictedBeanNames.add(beanName);
+            }
+        }
+    }
+
+    @Override
+    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
+        if (conflictedBeanNames.contains(beanName) && bean instanceof ServiceConfig) {
+            ServiceConfig serviceConfig = (ServiceConfig) bean;
+            if (isConflictedServiceConfig(serviceConfig)) {
+                // Set id as the bean name
+                serviceConfig.setId(beanName);
+            }
+
+        }
+        return bean;
+    }
+
+    private boolean isConflictedServiceConfig(ServiceConfig serviceConfig) {
+        return Objects.equals(serviceConfig.getId(), serviceConfig.getInterface());
+    }
+
+    @Override
+    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
+        return bean;
+    }
+
+    /**
+     * Keep the order being higher than {@link CommonAnnotationBeanPostProcessor#getOrder()} that is
+     * {@link Ordered#LOWEST_PRECEDENCE}
+     *
+     * @return {@link Ordered#LOWEST_PRECEDENCE} +1
+     */
+    @Override
+    public int getOrder() {
+        return LOWEST_PRECEDENCE + 1;
+    }
+
+    @Override
+    public void destroy() throws Exception {
+        interfaceNamesToBeanNames.clear();
+        conflictedBeanNames.clear();
+    }
+}
diff --git a/dubbo-spring-boot-parent/pom.xml b/dubbo-spring-boot-parent/pom.xml
index d9d654d..836b470 100644
--- a/dubbo-spring-boot-parent/pom.xml
+++ b/dubbo-spring-boot-parent/pom.xml
@@ -38,7 +38,7 @@
         <java.target.version>1.8</java.target.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-        <spring-boot.version>2.2.6.RELEASE</spring-boot.version>
+        <spring-boot.version>2.3.0.RELEASE</spring-boot.version>
         <dubbo.version>${revision}</dubbo.version>
         <!-- Build args -->
         <argline>-server -Xms256m -Xmx512m -Dfile.encoding=UTF-8 -Djava.net.preferIPv4Stack=true
@@ -447,6 +447,13 @@
             </properties>
         </profile>
 
+        <profile>
+            <!-- Spring Boot 2.2 -->
+            <id>spring-boot-2.2</id>
+            <properties>
+                <spring-boot.version>2.2.7.RELEASE</spring-boot.version>
+            </properties>
+        </profile>
     </profiles>
 
 </project>
diff --git a/dubbo-spring-boot-samples/auto-configure-samples/consumer-sample/pom.xml b/dubbo-spring-boot-samples/auto-configure-samples/consumer-sample/pom.xml
index 5b82024..94055ae 100644
--- a/dubbo-spring-boot-samples/auto-configure-samples/consumer-sample/pom.xml
+++ b/dubbo-spring-boot-samples/auto-configure-samples/consumer-sample/pom.xml
@@ -27,7 +27,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>dubbo-spring-boot-auto-configure-consumer-sample</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Auto-Configure :: Consumer Sample</name>
+    <name>Apache Dubbo Spring Boot :: Samples :: Auto-Configure :: Consumer Sample</name>
     <dependencies>
 
         <!-- Spring Boot dependencies -->
diff --git a/dubbo-spring-boot-samples/auto-configure-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboAutoConfigurationConsumerBootstrap.java b/dubbo-spring-boot-samples/auto-configure-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboAutoConfigurationConsumerBootstrap.java
similarity index 77%
rename from dubbo-spring-boot-samples/auto-configure-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboAutoConfigurationConsumerBootstrap.java
rename to dubbo-spring-boot-samples/auto-configure-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboAutoConfigurationConsumerBootstrap.java
index be83edf..b61900f 100644
--- a/dubbo-spring-boot-samples/auto-configure-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboAutoConfigurationConsumerBootstrap.java
+++ b/dubbo-spring-boot-samples/auto-configure-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboAutoConfigurationConsumerBootstrap.java
@@ -14,10 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.consumer.bootstrap;
+package org.apache.dubbo.spring.boot.sample.consumer.bootstrap;
 
-import org.apache.dubbo.config.annotation.Reference;
-import org.apache.dubbo.spring.boot.demo.consumer.DemoService;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.config.annotation.Method;
+import org.apache.dubbo.spring.boot.sample.consumer.DemoService;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.ApplicationRunner;
@@ -35,7 +37,14 @@
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
-    @Reference(version = "1.0.0", url = "dubbo://127.0.0.1:12345")
+    @DubboReference(
+            version = "1.0.0",
+            url = "dubbo://127.0.0.1:12345",
+            timeout = 100,
+            methods = {
+                    @Method(name = "sayHello", timeout = 300)
+            }
+    )
     private DemoService demoService;
 
     public static void main(String[] args) {
diff --git a/dubbo-spring-boot-samples/auto-configure-samples/pom.xml b/dubbo-spring-boot-samples/auto-configure-samples/pom.xml
index 3df5bf5..1e01e91 100644
--- a/dubbo-spring-boot-samples/auto-configure-samples/pom.xml
+++ b/dubbo-spring-boot-samples/auto-configure-samples/pom.xml
@@ -27,7 +27,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>dubbo-spring-boot-auto-configure-samples</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Auto-Configure</name>
+    <name>Apache Dubbo Spring Boot :: Samples :: Auto-Configure</name>
     <description>Apache Dubbo Spring Boot Auto-Configure Samples</description>
     <packaging>pom</packaging>
 
diff --git a/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/pom.xml b/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/pom.xml
index bc4bd87..b58f9b6 100644
--- a/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/pom.xml
+++ b/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/pom.xml
@@ -27,7 +27,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>dubbo-spring-boot-auto-configure-provider-sample</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Auto-Configure :: Provider Sample</name>
+    <name>Apache Dubbo Spring Boot :: Samples :: Auto-Configure :: Provider Sample</name>
 
     <dependencies>
 
diff --git a/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java b/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
deleted file mode 100644
index 325b19a..0000000
--- a/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.
- */
-package org.apache.dubbo.spring.boot.demo.provider.service;
-
-import org.apache.dubbo.config.annotation.Service;
-import org.apache.dubbo.spring.boot.demo.consumer.DemoService;
-import org.springframework.beans.factory.annotation.Value;
-
-/**
- * Default {@link DemoService}
- *
- * @see DemoService
- * @since 2.7.0
- */
-@Service(version = "1.0.0")
-public class DefaultDemoService implements DemoService {
-
-    /**
-     * The default value of ${dubbo.application.name} is ${spring.application.name}
-     */
-    @Value("${dubbo.application.name}")
-    private String serviceName;
-
-    @Override
-    public String sayHello(String name) {
-        return String.format("[%s] : Hello, %s", serviceName, name);
-    }
-}
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboAutoConfigurationProviderBootstrap.java b/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboAutoConfigurationProviderBootstrap.java
similarity index 73%
rename from dubbo-spring-boot-samples/auto-configure-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboAutoConfigurationProviderBootstrap.java
rename to dubbo-spring-boot-samples/auto-configure-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboAutoConfigurationProviderBootstrap.java
index bd61706..0c2c239 100644
--- a/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboAutoConfigurationProviderBootstrap.java
+++ b/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboAutoConfigurationProviderBootstrap.java
@@ -14,11 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.provider.bootstrap;
+package org.apache.dubbo.spring.boot.sample.provider.bootstrap;
 
-import org.apache.dubbo.spring.boot.demo.provider.service.DefaultDemoService;
+import org.apache.dubbo.spring.boot.sample.provider.service.DefaultDemoService;
+
+import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.builder.SpringApplicationBuilder;
 
 /**
  * Dubbo Auto-Configuration Provider Bootstrap
@@ -30,7 +31,8 @@
 public class DubboAutoConfigurationProviderBootstrap {
 
     public static void main(String[] args) {
-        new SpringApplicationBuilder(DubboAutoConfigurationProviderBootstrap.class)
-                .run(args);
+//        new SpringApplicationBuilder(DubboAutoConfigurationProviderBootstrap.class)
+//                .run(args);
+        SpringApplication.run(DubboAutoConfigurationProviderBootstrap.class,args);
     }
 }
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java b/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
similarity index 62%
copy from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
copy to dubbo-spring-boot-samples/auto-configure-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
index bf5f80d..75b1c37 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
+++ b/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
@@ -14,21 +14,30 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.provider.service;
+package org.apache.dubbo.spring.boot.sample.provider.service;
 
-import org.apache.dubbo.config.annotation.Service;
-import org.apache.dubbo.spring.boot.demo.consumer.DemoService;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.apache.dubbo.spring.boot.sample.consumer.DemoService;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
 
+import java.util.Random;
+
 /**
  * Default {@link DemoService}
  *
  * @see DemoService
  * @since 2.7.0
  */
-@Service(version = "${demo.service.version}")
+@DubboService(version = "1.0.0")
 public class DefaultDemoService implements DemoService {
 
+    private final Logger logger = LoggerFactory.getLogger(getClass());
+
+    private final Random costTimeRandom = new Random();
+
     /**
      * The default value of ${dubbo.application.name} is ${spring.application.name}
      */
@@ -37,6 +46,17 @@
 
     @Override
     public String sayHello(String name) {
+        await();
         return String.format("[%s] : Hello, %s", serviceName, name);
     }
+
+    private void await() {
+        try {
+            long timeInMillisToWait = costTimeRandom.nextInt(500);
+            Thread.sleep(timeInMillisToWait);
+            logger.info("execution time : " + timeInMillisToWait + " ms.");
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+    }
 }
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/src/main/resources/application.properties b/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/src/main/resources/application.properties
index b3de3d9..db9e2db 100644
--- a/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/src/main/resources/application.properties
+++ b/dubbo-spring-boot-samples/auto-configure-samples/provider-sample/src/main/resources/application.properties
@@ -1,7 +1,7 @@
 # Spring boot application
 spring.application.name=dubbo-auto-configuration-provider-demo
 # Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service
-dubbo.scan.base-packages=org.apache.dubbo.spring.boot.demo.provider.service
+dubbo.scan.base-packages=org.apache.dubbo.spring.boot.sample.provider.service
 # Dubbo Application
 ## The default value of dubbo.application.name is ${spring.application.name}
 ## dubbo.application.name=${spring.application.name}
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java b/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
deleted file mode 100644
index bbfe525..0000000
--- a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.
- */
-package org.apache.dubbo.spring.boot.demo.provider.service;
-
-import org.apache.dubbo.config.annotation.Service;
-import org.apache.dubbo.spring.boot.demo.consumer.DemoService;
-
-import org.springframework.beans.factory.annotation.Value;
-
-/**
- * Default {@link DemoService}
- *
- * @see DemoService
- * @since 2.7.0
- */
-@Service(version = "${demo.service.version}")
-public class DefaultDemoService implements DemoService {
-
-    /**
-     * The default value of ${dubbo.application.name} is ${spring.application.name}
-     */
-    @Value("${dubbo.application.name}")
-    private String serviceName;
-
-    @Override
-    public String sayHello(String name) {
-        return String.format("[%s] : Hello, %s", serviceName, name);
-    }
-}
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/externalized-configuration-samples/consumer-sample/pom.xml b/dubbo-spring-boot-samples/externalized-configuration-samples/consumer-sample/pom.xml
index dab1864..5af0397 100644
--- a/dubbo-spring-boot-samples/externalized-configuration-samples/consumer-sample/pom.xml
+++ b/dubbo-spring-boot-samples/externalized-configuration-samples/consumer-sample/pom.xml
@@ -27,7 +27,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>dubbo-spring-boot-externalized-configuration-consumer-sample</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Externalized Configuration :: Consumer Sample</name>
+    <name>Apache Dubbo Spring Boot :: Samples :: Externalized Configuration :: Consumer Sample</name>
     <dependencies>
 
         <!-- Spring Boot dependencies -->
diff --git a/dubbo-spring-boot-samples/externalized-configuration-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboExternalizedConfigurationConsumerBootstrap.java b/dubbo-spring-boot-samples/externalized-configuration-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboExternalizedConfigurationConsumerBootstrap.java
similarity index 88%
rename from dubbo-spring-boot-samples/externalized-configuration-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboExternalizedConfigurationConsumerBootstrap.java
rename to dubbo-spring-boot-samples/externalized-configuration-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboExternalizedConfigurationConsumerBootstrap.java
index 063c1a6..43064b4 100644
--- a/dubbo-spring-boot-samples/externalized-configuration-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboExternalizedConfigurationConsumerBootstrap.java
+++ b/dubbo-spring-boot-samples/externalized-configuration-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboExternalizedConfigurationConsumerBootstrap.java
@@ -14,10 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.consumer.bootstrap;
+package org.apache.dubbo.spring.boot.sample.consumer.bootstrap;
 
-import org.apache.dubbo.config.annotation.Reference;
-import org.apache.dubbo.spring.boot.demo.consumer.DemoService;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.spring.boot.sample.consumer.DemoService;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -40,7 +40,7 @@
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
-    @Reference(version = "${demo.service.version}", url = "${demo.service.url}")
+    @DubboReference(version = "${demo.service.version}", url = "${demo.service.url}")
     private DemoService demoService;
 
     public static void main(String[] args) {
diff --git a/dubbo-spring-boot-samples/externalized-configuration-samples/pom.xml b/dubbo-spring-boot-samples/externalized-configuration-samples/pom.xml
index db6f08a..33770e2 100644
--- a/dubbo-spring-boot-samples/externalized-configuration-samples/pom.xml
+++ b/dubbo-spring-boot-samples/externalized-configuration-samples/pom.xml
@@ -27,7 +27,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>dubbo-spring-boot-externalized-configuration-samples</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Externalized Configuration</name>
+    <name>Apache Dubbo Spring Boot :: Samples :: Externalized Configuration</name>
     <description>Apache Dubbo Spring Boot Externalized Configuration Samples</description>
     <packaging>pom</packaging>
 
diff --git a/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/pom.xml b/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/pom.xml
index a22f202..7066fc1 100644
--- a/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/pom.xml
+++ b/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/pom.xml
@@ -27,7 +27,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>dubbo-spring-boot-externalized-configuration-provider-sample</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Externalized Configuration :: Provider Sample</name>
+    <name>Apache Dubbo Spring Boot :: Samples :: Externalized Configuration :: Provider Sample</name>
 
     <dependencies>
 
diff --git a/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java b/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
deleted file mode 100644
index bf5f80d..0000000
--- a/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.
- */
-package org.apache.dubbo.spring.boot.demo.provider.service;
-
-import org.apache.dubbo.config.annotation.Service;
-import org.apache.dubbo.spring.boot.demo.consumer.DemoService;
-import org.springframework.beans.factory.annotation.Value;
-
-/**
- * Default {@link DemoService}
- *
- * @see DemoService
- * @since 2.7.0
- */
-@Service(version = "${demo.service.version}")
-public class DefaultDemoService implements DemoService {
-
-    /**
-     * The default value of ${dubbo.application.name} is ${spring.application.name}
-     */
-    @Value("${dubbo.application.name}")
-    private String serviceName;
-
-    @Override
-    public String sayHello(String name) {
-        return String.format("[%s] : Hello, %s", serviceName, name);
-    }
-}
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboExternalizedConfigurationProviderBootstrap.java b/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboExternalizedConfigurationProviderBootstrap.java
similarity index 89%
rename from dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboExternalizedConfigurationProviderBootstrap.java
rename to dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboExternalizedConfigurationProviderBootstrap.java
index 2671f75..6acdfcd 100644
--- a/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboExternalizedConfigurationProviderBootstrap.java
+++ b/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboExternalizedConfigurationProviderBootstrap.java
@@ -14,9 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.provider.bootstrap;
+package org.apache.dubbo.spring.boot.sample.provider.bootstrap;
 
-import org.apache.dubbo.spring.boot.demo.provider.service.DefaultDemoService;
+import org.apache.dubbo.spring.boot.sample.provider.service.DefaultDemoService;
+
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java b/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
similarity index 84%
rename from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
rename to dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
index bf5f80d..133ff47 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
+++ b/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
@@ -14,10 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.provider.service;
+package org.apache.dubbo.spring.boot.sample.provider.service;
 
-import org.apache.dubbo.config.annotation.Service;
-import org.apache.dubbo.spring.boot.demo.consumer.DemoService;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.apache.dubbo.spring.boot.sample.consumer.DemoService;
+
 import org.springframework.beans.factory.annotation.Value;
 
 /**
@@ -26,7 +27,7 @@
  * @see DemoService
  * @since 2.7.0
  */
-@Service(version = "${demo.service.version}")
+@DubboService(version = "${demo.service.version}")
 public class DefaultDemoService implements DemoService {
 
     /**
diff --git a/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/resources/application.properties b/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/resources/application.properties
index 400759a..c5f3fb3 100644
--- a/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/resources/application.properties
+++ b/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/resources/application.properties
@@ -1,7 +1,7 @@
 # Spring boot application
 spring.application.name=dubbo-externalized-configuration-provider-sample
 # Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service
-dubbo.scan.base-packages=org.apache.dubbo.spring.boot.demo.provider.service
+dubbo.scan.base-packages=org.apache.dubbo.spring.boot.sample.provider.service
 
 # Dubbo Application
 ## The default value of dubbo.application.name is ${spring.application.name}
diff --git a/dubbo-spring-boot-samples/pom.xml b/dubbo-spring-boot-samples/pom.xml
index d2a4ba1..f2eb29d 100644
--- a/dubbo-spring-boot-samples/pom.xml
+++ b/dubbo-spring-boot-samples/pom.xml
@@ -36,8 +36,10 @@
         <module>sample-api</module>
         <module>auto-configure-samples</module>
         <module>externalized-configuration-samples</module>
-        <module>dubbo-registry-zookeeper-samples</module>
-        <module>dubbo-registry-nacos-samples</module>
+        <module>registry-samples</module>
+        <module>service-introspection-samples</module>
+        <module>servlet-container-samples</module>
+
     </modules>
 
     <build>
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/pom.xml b/dubbo-spring-boot-samples/registry-samples/nacos-samples/consumer-sample/pom.xml
similarity index 91%
rename from dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/pom.xml
rename to dubbo-spring-boot-samples/registry-samples/nacos-samples/consumer-sample/pom.xml
index 4d4289a..7bc6df6 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/pom.xml
+++ b/dubbo-spring-boot-samples/registry-samples/nacos-samples/consumer-sample/pom.xml
@@ -19,15 +19,15 @@
          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">
     <parent>
-        <artifactId>dubbo-spring-boot-registry-nacos-samples</artifactId>
         <groupId>org.apache.dubbo.samples</groupId>
+        <artifactId>dubbo-spring-boot-registry-nacos-samples</artifactId>
         <version>${revision}</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>dubbo-spring-boot-registry-nacos-consumer-sample</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Registry Nacos :: Consumer Sample</name>
+    <name>Apache Dubbo Spring Boot :: Samples :: Registry Nacos :: Consumer Sample</name>
 
     <properties>
         <nacos.version>1.2.1</nacos.version>
@@ -48,12 +48,6 @@
 
         <!-- Dubbo Registry Nacos -->
         <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>dubbo-registry-nacos</artifactId>
-            <version>2.7.6</version>
-        </dependency>
-
-        <dependency>
             <groupId>com.alibaba.nacos</groupId>
             <artifactId>nacos-client</artifactId>
             <version>${nacos.version}</version>
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboRegistryNacosConsumerBootstrap.java b/dubbo-spring-boot-samples/registry-samples/nacos-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboRegistryNacosConsumerBootstrap.java
similarity index 86%
rename from dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboRegistryNacosConsumerBootstrap.java
rename to dubbo-spring-boot-samples/registry-samples/nacos-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboRegistryNacosConsumerBootstrap.java
index dab1487..77fe061 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboRegistryNacosConsumerBootstrap.java
+++ b/dubbo-spring-boot-samples/registry-samples/nacos-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboRegistryNacosConsumerBootstrap.java
@@ -14,10 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.consumer.bootstrap;
+package org.apache.dubbo.spring.boot.sample.consumer.bootstrap;
 
-import org.apache.dubbo.config.annotation.Reference;
-import org.apache.dubbo.spring.boot.demo.consumer.DemoService;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.spring.boot.sample.consumer.DemoService;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -34,7 +34,7 @@
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
-    @Reference(version = "${demo.service.version}")
+    @DubboReference(version = "${demo.service.version}")
     private DemoService demoService;
 
     public static void main(String[] args) {
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/src/main/resources/application.yml b/dubbo-spring-boot-samples/registry-samples/nacos-samples/consumer-sample/src/main/resources/application.yml
similarity index 100%
rename from dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/src/main/resources/application.yml
rename to dubbo-spring-boot-samples/registry-samples/nacos-samples/consumer-sample/src/main/resources/application.yml
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml b/dubbo-spring-boot-samples/registry-samples/nacos-samples/pom.xml
similarity index 91%
rename from dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml
rename to dubbo-spring-boot-samples/registry-samples/nacos-samples/pom.xml
index 56badba..0a72638 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml
+++ b/dubbo-spring-boot-samples/registry-samples/nacos-samples/pom.xml
@@ -19,8 +19,8 @@
          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">
     <parent>
-        <artifactId>dubbo-spring-boot-samples</artifactId>
         <groupId>org.apache.dubbo.samples</groupId>
+        <artifactId>dubbo-spring-boot-registry-samples</artifactId>
         <version>${revision}</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
@@ -28,14 +28,13 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>dubbo-spring-boot-registry-nacos-samples</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Registry Nacos</name>
+    <name>Apache Dubbo Spring Boot :: Samples :: Registry Nacos</name>
     <description>Apache Dubbo Spring Boot Registry Nacos Samples</description>
     <packaging>pom</packaging>
 
-
     <modules>
-        <module>provider-sample</module>
         <module>consumer-sample</module>
+        <module>provider-sample</module>
     </modules>
 
 </project>
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/provider-sample/pom.xml b/dubbo-spring-boot-samples/registry-samples/nacos-samples/provider-sample/pom.xml
similarity index 91%
rename from dubbo-spring-boot-samples/dubbo-registry-nacos-samples/provider-sample/pom.xml
rename to dubbo-spring-boot-samples/registry-samples/nacos-samples/provider-sample/pom.xml
index 8f188da..70850b6 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/provider-sample/pom.xml
+++ b/dubbo-spring-boot-samples/registry-samples/nacos-samples/provider-sample/pom.xml
@@ -27,7 +27,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>dubbo-spring-boot-registry-nacos-provider-sample</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Registry Nacos :: Provider Sample</name>
+    <name>Apache Dubbo Spring Boot :: Samples :: Registry Nacos :: Provider Sample</name>
 
     <properties>
         <nacos.version>1.2.1</nacos.version>
@@ -48,12 +48,6 @@
 
         <!-- Dubbo Registry Nacos -->
         <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>dubbo-registry-nacos</artifactId>
-            <version>2.7.6</version>
-        </dependency>
-
-        <dependency>
             <groupId>com.alibaba.nacos</groupId>
             <artifactId>nacos-client</artifactId>
             <version>${nacos.version}</version>
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboRegistryNacosProviderBootstrap.java b/dubbo-spring-boot-samples/registry-samples/nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboRegistryNacosProviderBootstrap.java
similarity index 89%
rename from dubbo-spring-boot-samples/dubbo-registry-nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboRegistryNacosProviderBootstrap.java
rename to dubbo-spring-boot-samples/registry-samples/nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboRegistryNacosProviderBootstrap.java
index 64b523f..f1ee64b 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboRegistryNacosProviderBootstrap.java
+++ b/dubbo-spring-boot-samples/registry-samples/nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboRegistryNacosProviderBootstrap.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.provider.bootstrap;
+package org.apache.dubbo.spring.boot.sample.provider.bootstrap;
 
-import org.apache.dubbo.spring.boot.demo.provider.service.DefaultDemoService;
+import org.apache.dubbo.spring.boot.sample.provider.service.DefaultDemoService;
 
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.builder.SpringApplicationBuilder;
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java b/dubbo-spring-boot-samples/registry-samples/nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
similarity index 84%
copy from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
copy to dubbo-spring-boot-samples/registry-samples/nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
index bf5f80d..133ff47 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
+++ b/dubbo-spring-boot-samples/registry-samples/nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
@@ -14,10 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.provider.service;
+package org.apache.dubbo.spring.boot.sample.provider.service;
 
-import org.apache.dubbo.config.annotation.Service;
-import org.apache.dubbo.spring.boot.demo.consumer.DemoService;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.apache.dubbo.spring.boot.sample.consumer.DemoService;
+
 import org.springframework.beans.factory.annotation.Value;
 
 /**
@@ -26,7 +27,7 @@
  * @see DemoService
  * @since 2.7.0
  */
-@Service(version = "${demo.service.version}")
+@DubboService(version = "${demo.service.version}")
 public class DefaultDemoService implements DemoService {
 
     /**
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/provider-sample/src/main/resources/application.properties b/dubbo-spring-boot-samples/registry-samples/nacos-samples/provider-sample/src/main/resources/application.properties
similarity index 89%
rename from dubbo-spring-boot-samples/dubbo-registry-nacos-samples/provider-sample/src/main/resources/application.properties
rename to dubbo-spring-boot-samples/registry-samples/nacos-samples/provider-sample/src/main/resources/application.properties
index 5dbc220..025fe15 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/provider-sample/src/main/resources/application.properties
+++ b/dubbo-spring-boot-samples/registry-samples/nacos-samples/provider-sample/src/main/resources/application.properties
@@ -1,7 +1,7 @@
 # Spring boot application
 spring.application.name=dubbo-registry-nacos-provider-sample
 # Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service
-dubbo.scan.base-packages=org.apache.dubbo.spring.boot.demo.provider.service
+dubbo.scan.base-packages=org.apache.dubbo.spring.boot.sample.provider.service
 
 # Dubbo Application
 ## The default value of dubbo.application.name is ${spring.application.name}
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml b/dubbo-spring-boot-samples/registry-samples/pom.xml
similarity index 81%
copy from dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml
copy to dubbo-spring-boot-samples/registry-samples/pom.xml
index 56badba..284fee7 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml
+++ b/dubbo-spring-boot-samples/registry-samples/pom.xml
@@ -19,23 +19,21 @@
          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">
     <parent>
-        <artifactId>dubbo-spring-boot-samples</artifactId>
         <groupId>org.apache.dubbo.samples</groupId>
+        <artifactId>dubbo-spring-boot-samples</artifactId>
         <version>${revision}</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
-
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-spring-boot-registry-nacos-samples</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Registry Nacos</name>
-    <description>Apache Dubbo Spring Boot Registry Nacos Samples</description>
+    <artifactId>dubbo-spring-boot-registry-samples</artifactId>
+    <name>Apache Dubbo Spring Boot :: Samples :: Registry</name>
+    <description>Apache Dubbo Spring Boot Registry Samples</description>
     <packaging>pom</packaging>
 
-
     <modules>
-        <module>provider-sample</module>
-        <module>consumer-sample</module>
+        <module>nacos-samples</module>
+        <module>zookeeper-samples</module>
     </modules>
 
 </project>
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/consumer-sample/pom.xml b/dubbo-spring-boot-samples/registry-samples/zookeeper-samples/consumer-sample/pom.xml
similarity index 96%
rename from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/consumer-sample/pom.xml
rename to dubbo-spring-boot-samples/registry-samples/zookeeper-samples/consumer-sample/pom.xml
index 1667be2..0b242c4 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/consumer-sample/pom.xml
+++ b/dubbo-spring-boot-samples/registry-samples/zookeeper-samples/consumer-sample/pom.xml
@@ -27,7 +27,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>dubbo-spring-boot-registry-zookeeper-consumer-sample</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Registry Zookeeper :: Consumer Sample</name>
+    <name>Apache Dubbo Spring Boot :: Samples :: Registry Zookeeper :: Consumer Sample</name>
     <dependencies>
 
         <!-- Spring Boot dependencies -->
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboRegistryZooKeeperConsumerBootstrap.java b/dubbo-spring-boot-samples/registry-samples/zookeeper-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboRegistryZooKeeperConsumerBootstrap.java
similarity index 86%
rename from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboRegistryZooKeeperConsumerBootstrap.java
rename to dubbo-spring-boot-samples/registry-samples/zookeeper-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboRegistryZooKeeperConsumerBootstrap.java
index 81829ca..efde863 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboRegistryZooKeeperConsumerBootstrap.java
+++ b/dubbo-spring-boot-samples/registry-samples/zookeeper-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboRegistryZooKeeperConsumerBootstrap.java
@@ -14,10 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.consumer.bootstrap;
+package org.apache.dubbo.spring.boot.sample.consumer.bootstrap;
 
-import org.apache.dubbo.config.annotation.Reference;
-import org.apache.dubbo.spring.boot.demo.consumer.DemoService;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.spring.boot.sample.consumer.DemoService;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.ApplicationRunner;
@@ -33,7 +34,7 @@
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
-    @Reference(version = "${demo.service.version}")
+    @DubboReference(version = "${demo.service.version}")
     private DemoService demoService;
 
     public static void main(String[] args) {
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/consumer-sample/src/main/resources/application.yml b/dubbo-spring-boot-samples/registry-samples/zookeeper-samples/consumer-sample/src/main/resources/application.yml
similarity index 100%
rename from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/consumer-sample/src/main/resources/application.yml
rename to dubbo-spring-boot-samples/registry-samples/zookeeper-samples/consumer-sample/src/main/resources/application.yml
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/pom.xml b/dubbo-spring-boot-samples/registry-samples/zookeeper-samples/pom.xml
similarity index 92%
rename from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/pom.xml
rename to dubbo-spring-boot-samples/registry-samples/zookeeper-samples/pom.xml
index 741dce9..c059076 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/pom.xml
+++ b/dubbo-spring-boot-samples/registry-samples/zookeeper-samples/pom.xml
@@ -22,12 +22,12 @@
         <groupId>org.apache.dubbo.samples</groupId>
         <artifactId>dubbo-spring-boot-samples</artifactId>
         <version>${revision}</version>
-        <relativePath>../pom.xml</relativePath>
+        <relativePath>../../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>dubbo-spring-boot-registry-zookeeper-samples</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Registry Zookeeper</name>
+    <name>Apache Dubbo Spring Boot :: Samples :: Registry Zookeeper</name>
     <description>Apache Dubbo Spring Boot Registry Zookeeper Samples</description>
     <packaging>pom</packaging>
 
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/pom.xml b/dubbo-spring-boot-samples/registry-samples/zookeeper-samples/provider-sample/pom.xml
similarity index 96%
rename from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/pom.xml
rename to dubbo-spring-boot-samples/registry-samples/zookeeper-samples/provider-sample/pom.xml
index cb2179a..5349f76 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/pom.xml
+++ b/dubbo-spring-boot-samples/registry-samples/zookeeper-samples/provider-sample/pom.xml
@@ -27,7 +27,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>dubbo-spring-boot-registry-zookeeper-provider-sample</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Registry Zookeeper :: Provider Sample</name>
+    <name>Apache Dubbo Spring Boot :: Samples :: Registry Zookeeper :: Provider Sample</name>
 
     <dependencies>
 
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboRegistryZooKeeperProviderBootstrap.java b/dubbo-spring-boot-samples/registry-samples/zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboRegistryZooKeeperProviderBootstrap.java
similarity index 89%
rename from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboRegistryZooKeeperProviderBootstrap.java
rename to dubbo-spring-boot-samples/registry-samples/zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboRegistryZooKeeperProviderBootstrap.java
index ab33321..4f00ab7 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboRegistryZooKeeperProviderBootstrap.java
+++ b/dubbo-spring-boot-samples/registry-samples/zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboRegistryZooKeeperProviderBootstrap.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.provider.bootstrap;
+package org.apache.dubbo.spring.boot.sample.provider.bootstrap;
 
-import org.apache.dubbo.spring.boot.demo.provider.service.DefaultDemoService;
+import org.apache.dubbo.spring.boot.sample.provider.service.DefaultDemoService;
 
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.builder.SpringApplicationBuilder;
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java b/dubbo-spring-boot-samples/registry-samples/zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
similarity index 84%
copy from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
copy to dubbo-spring-boot-samples/registry-samples/zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
index bf5f80d..133ff47 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
+++ b/dubbo-spring-boot-samples/registry-samples/zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
@@ -14,10 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.provider.service;
+package org.apache.dubbo.spring.boot.sample.provider.service;
 
-import org.apache.dubbo.config.annotation.Service;
-import org.apache.dubbo.spring.boot.demo.consumer.DemoService;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.apache.dubbo.spring.boot.sample.consumer.DemoService;
+
 import org.springframework.beans.factory.annotation.Value;
 
 /**
@@ -26,7 +27,7 @@
  * @see DemoService
  * @since 2.7.0
  */
-@Service(version = "${demo.service.version}")
+@DubboService(version = "${demo.service.version}")
 public class DefaultDemoService implements DemoService {
 
     /**
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/resources/application.properties b/dubbo-spring-boot-samples/registry-samples/zookeeper-samples/provider-sample/src/main/resources/application.properties
similarity index 88%
rename from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/resources/application.properties
rename to dubbo-spring-boot-samples/registry-samples/zookeeper-samples/provider-sample/src/main/resources/application.properties
index 5162818..e85f651 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/resources/application.properties
+++ b/dubbo-spring-boot-samples/registry-samples/zookeeper-samples/provider-sample/src/main/resources/application.properties
@@ -1,7 +1,7 @@
 # Spring boot application
 spring.application.name=dubbo-registry-zookeeper-provider-sample
 # Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service
-dubbo.scan.base-packages=org.apache.dubbo.spring.boot.demo.provider.service
+dubbo.scan.base-packages=org.apache.dubbo.spring.boot.sample.provider.service
 
 # Dubbo Application
 ## The default value of dubbo.application.name is ${spring.application.name}
diff --git a/dubbo-spring-boot-samples/sample-api/pom.xml b/dubbo-spring-boot-samples/sample-api/pom.xml
index 3f3b32b..bc73fab 100644
--- a/dubbo-spring-boot-samples/sample-api/pom.xml
+++ b/dubbo-spring-boot-samples/sample-api/pom.xml
@@ -27,6 +27,7 @@
     <modelVersion>4.0.0</modelVersion>
 
     <artifactId>dubbo-spring-boot-sample-api</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : API</name>
+    <name>Apache Dubbo Spring Boot :: Samples :: API</name>
+    <description>Apache Dubbo Spring Boot Samples API</description>
 
 </project>
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/sample-api/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/DemoService.java b/dubbo-spring-boot-samples/sample-api/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/DemoService.java
similarity index 94%
rename from dubbo-spring-boot-samples/sample-api/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/DemoService.java
rename to dubbo-spring-boot-samples/sample-api/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/DemoService.java
index 905e94e..398591b 100644
--- a/dubbo-spring-boot-samples/sample-api/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/DemoService.java
+++ b/dubbo-spring-boot-samples/sample-api/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/DemoService.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.consumer;
+package org.apache.dubbo.spring.boot.sample.consumer;
 
 /**
  * Demo Service interface
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/pom.xml b/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/consumer-sample/pom.xml
similarity index 83%
copy from dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/pom.xml
copy to dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/consumer-sample/pom.xml
index 4d4289a..0fb6c5f 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/pom.xml
+++ b/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/consumer-sample/pom.xml
@@ -19,15 +19,17 @@
          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">
     <parent>
-        <artifactId>dubbo-spring-boot-registry-nacos-samples</artifactId>
         <groupId>org.apache.dubbo.samples</groupId>
+        <artifactId>dubbo-spring-boot-service-introspection-nacos-samples</artifactId>
         <version>${revision}</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-spring-boot-registry-nacos-consumer-sample</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Registry Nacos :: Consumer Sample</name>
+    <artifactId>dubbo-spring-boot-service-introspection-nacos-consumer-sample</artifactId>
+    <name>Apache Dubbo Spring Boot :: Samples :: Service Introspection :: Nacos :: Consumer Sample</name>
+    <description>Apache Dubbo Spring Boot Service Introspection Nacos consumer Sample</description>
+    <packaging>jar</packaging>
 
     <properties>
         <nacos.version>1.2.1</nacos.version>
@@ -50,7 +52,7 @@
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>dubbo-registry-nacos</artifactId>
-            <version>2.7.6</version>
+            <version>${revision}</version>
         </dependency>
 
         <dependency>
@@ -64,6 +66,11 @@
             <artifactId>dubbo-spring-boot-sample-api</artifactId>
             <version>${revision}</version>
         </dependency>
+
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboRegistryNacosConsumerBootstrap.java b/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboNacosServiceIntrospectionConsumerBootstrap.java
similarity index 77%
copy from dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboRegistryNacosConsumerBootstrap.java
copy to dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboNacosServiceIntrospectionConsumerBootstrap.java
index dab1487..d8baac3 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboRegistryNacosConsumerBootstrap.java
+++ b/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboNacosServiceIntrospectionConsumerBootstrap.java
@@ -14,10 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.consumer.bootstrap;
+package org.apache.dubbo.spring.boot.sample.consumer.bootstrap;
 
-import org.apache.dubbo.config.annotation.Reference;
-import org.apache.dubbo.spring.boot.demo.consumer.DemoService;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.spring.boot.sample.consumer.DemoService;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -30,15 +30,15 @@
  * Dubbo Registry Nacos Consumer Bootstrap
  */
 @EnableAutoConfiguration
-public class DubboRegistryNacosConsumerBootstrap {
+public class DubboNacosServiceIntrospectionConsumerBootstrap {
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
-    @Reference(version = "${demo.service.version}")
+    @DubboReference(version = "${demo.service.version}")
     private DemoService demoService;
 
     public static void main(String[] args) {
-        SpringApplication.run(DubboRegistryNacosConsumerBootstrap.class).close();
+        SpringApplication.run(DubboNacosServiceIntrospectionConsumerBootstrap.class).close();
     }
 
     @Bean
diff --git a/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/consumer-sample/src/main/resources/application.yml b/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/consumer-sample/src/main/resources/application.yml
new file mode 100644
index 0000000..d07d811
--- /dev/null
+++ b/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/consumer-sample/src/main/resources/application.yml
@@ -0,0 +1,17 @@
+spring:
+  application:
+    name: dubbo-nacos-service-introspection-consumer-sample
+
+demo:
+  service:
+    version: 1.0.0
+
+nacos:
+  host: 127.0.0.1
+  port: 8848
+  username: nacos
+  password: nacos
+
+dubbo:
+  registry:
+    address: nacos://${nacos.host}:${nacos.port}/?username=${nacos.username}&password=${nacos.password}&registry-type=service
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml b/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/pom.xml
similarity index 80%
copy from dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml
copy to dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/pom.xml
index 56badba..29af9b1 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml
+++ b/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/pom.xml
@@ -19,20 +19,18 @@
          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">
     <parent>
-        <artifactId>dubbo-spring-boot-samples</artifactId>
         <groupId>org.apache.dubbo.samples</groupId>
+        <artifactId>dubbo-spring-boot-service-introspection-samples</artifactId>
         <version>${revision}</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
-
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-spring-boot-registry-nacos-samples</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Registry Nacos</name>
-    <description>Apache Dubbo Spring Boot Registry Nacos Samples</description>
+    <artifactId>dubbo-spring-boot-service-introspection-nacos-samples</artifactId>
+    <name>Apache Dubbo Spring Boot :: Samples :: Service Introspection :: Nacos</name>
+    <description>Apache Dubbo Spring Boot Service Introspection Nacos Samples</description>
     <packaging>pom</packaging>
 
-
     <modules>
         <module>provider-sample</module>
         <module>consumer-sample</module>
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/pom.xml b/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/provider-sample/pom.xml
similarity index 83%
copy from dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/pom.xml
copy to dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/provider-sample/pom.xml
index 4d4289a..6b709fd 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/consumer-sample/pom.xml
+++ b/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/provider-sample/pom.xml
@@ -19,15 +19,17 @@
          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">
     <parent>
-        <artifactId>dubbo-spring-boot-registry-nacos-samples</artifactId>
         <groupId>org.apache.dubbo.samples</groupId>
+        <artifactId>dubbo-spring-boot-service-introspection-nacos-samples</artifactId>
         <version>${revision}</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-spring-boot-registry-nacos-consumer-sample</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Registry Nacos :: Consumer Sample</name>
+    <artifactId>dubbo-spring-boot-service-introspection-nacos-provider-sample</artifactId>
+    <name>Apache Dubbo Spring Boot :: Samples :: Service Introspection :: Nacos :: Provider Sample</name>
+    <description>Apache Dubbo Spring Boot Service Introspection Nacos Provider Sample</description>
+    <packaging>jar</packaging>
 
     <properties>
         <nacos.version>1.2.1</nacos.version>
@@ -50,7 +52,7 @@
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>dubbo-registry-nacos</artifactId>
-            <version>2.7.6</version>
+            <version>${revision}</version>
         </dependency>
 
         <dependency>
@@ -64,6 +66,11 @@
             <artifactId>dubbo-spring-boot-sample-api</artifactId>
             <version>${revision}</version>
         </dependency>
+
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboExternalizedConfigurationProviderBootstrap.java b/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboNacosServiceIntrospectionProviderBootstrap.java
similarity index 77%
copy from dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboExternalizedConfigurationProviderBootstrap.java
copy to dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboNacosServiceIntrospectionProviderBootstrap.java
index 2671f75..92cdd0c 100644
--- a/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboExternalizedConfigurationProviderBootstrap.java
+++ b/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboNacosServiceIntrospectionProviderBootstrap.java
@@ -14,23 +14,24 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.provider.bootstrap;
+package org.apache.dubbo.spring.boot.sample.provider.bootstrap;
 
-import org.apache.dubbo.spring.boot.demo.provider.service.DefaultDemoService;
+import org.apache.dubbo.spring.boot.sample.provider.service.DefaultDemoService;
+
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 /**
- * Dubbo Externalized Configuration Provider Bootstrap
+ * Dubbo Nacos Service-Introspection Provider Bootstrap
  *
  * @see DefaultDemoService
  * @since 2.7.0
  */
 @EnableAutoConfiguration
-public class DubboExternalizedConfigurationProviderBootstrap {
+public class DubboNacosServiceIntrospectionProviderBootstrap {
 
     public static void main(String[] args) {
-        new SpringApplicationBuilder(DubboExternalizedConfigurationProviderBootstrap.class)
+        new SpringApplicationBuilder(DubboNacosServiceIntrospectionProviderBootstrap.class)
                 .run(args);
     }
 }
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java b/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
similarity index 84%
copy from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
copy to dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
index bf5f80d..133ff47 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
+++ b/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
@@ -14,10 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.provider.service;
+package org.apache.dubbo.spring.boot.sample.provider.service;
 
-import org.apache.dubbo.config.annotation.Service;
-import org.apache.dubbo.spring.boot.demo.consumer.DemoService;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.apache.dubbo.spring.boot.sample.consumer.DemoService;
+
 import org.springframework.beans.factory.annotation.Value;
 
 /**
@@ -26,7 +27,7 @@
  * @see DemoService
  * @since 2.7.0
  */
-@Service(version = "${demo.service.version}")
+@DubboService(version = "${demo.service.version}")
 public class DefaultDemoService implements DemoService {
 
     /**
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/provider-sample/src/main/resources/application.properties b/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/provider-sample/src/main/resources/application.properties
similarity index 70%
copy from dubbo-spring-boot-samples/dubbo-registry-nacos-samples/provider-sample/src/main/resources/application.properties
copy to dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/provider-sample/src/main/resources/application.properties
index 5dbc220..41569f3 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/provider-sample/src/main/resources/application.properties
+++ b/dubbo-spring-boot-samples/service-introspection-samples/nacos-samples/provider-sample/src/main/resources/application.properties
@@ -1,7 +1,7 @@
 # Spring boot application
-spring.application.name=dubbo-registry-nacos-provider-sample
+spring.application.name=dubbo-nacos-service-introspection-provider-sample
 # Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service
-dubbo.scan.base-packages=org.apache.dubbo.spring.boot.demo.provider.service
+dubbo.scan.base-packages=org.apache.dubbo.spring.boot.sample.provider.service
 
 # Dubbo Application
 ## The default value of dubbo.application.name is ${spring.application.name}
@@ -17,7 +17,7 @@
 dubbo.protocol.port=-1
 
 ## Dubbo Registry
-dubbo.registry.address=nacos://${nacos.server-address}:${nacos.port}/?username=${nacos.username}&password=${nacos.password}
+dubbo.registry.address=nacos://${nacos.server-address}:${nacos.port}/?username=${nacos.username}&password=${nacos.password}&registry-type=service
 
 ## DemoService version
 demo.service.version=1.0.0
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml b/dubbo-spring-boot-samples/service-introspection-samples/pom.xml
similarity index 80%
copy from dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml
copy to dubbo-spring-boot-samples/service-introspection-samples/pom.xml
index 56badba..f7d0515 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml
+++ b/dubbo-spring-boot-samples/service-introspection-samples/pom.xml
@@ -19,23 +19,20 @@
          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">
     <parent>
-        <artifactId>dubbo-spring-boot-samples</artifactId>
         <groupId>org.apache.dubbo.samples</groupId>
+        <artifactId>dubbo-spring-boot-samples</artifactId>
         <version>${revision}</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
-
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-spring-boot-registry-nacos-samples</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Registry Nacos</name>
-    <description>Apache Dubbo Spring Boot Registry Nacos Samples</description>
+    <artifactId>dubbo-spring-boot-service-introspection-samples</artifactId>
+    <name>Apache Dubbo Spring Boot :: Samples :: Service Introspection</name>
+    <description>Apache Dubbo Spring Boot Service Introspection Samples</description>
     <packaging>pom</packaging>
 
-
     <modules>
-        <module>provider-sample</module>
-        <module>consumer-sample</module>
+        <module>zookeeper-samples</module>
+        <module>nacos-samples</module>
     </modules>
-
 </project>
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/pom.xml b/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/consumer-sample/pom.xml
similarity index 72%
copy from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/pom.xml
copy to dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/consumer-sample/pom.xml
index cb2179a..7c6b0c7 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/pom.xml
+++ b/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/consumer-sample/pom.xml
@@ -15,22 +15,23 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
+<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">
     <parent>
         <groupId>org.apache.dubbo.samples</groupId>
-        <artifactId>dubbo-spring-boot-registry-zookeeper-samples</artifactId>
+        <artifactId>dubbo-spring-boot-service-introspection-zookeeper-samples</artifactId>
         <version>${revision}</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-spring-boot-registry-zookeeper-provider-sample</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Registry Zookeeper :: Provider Sample</name>
+    <artifactId>dubbo-spring-boot-service-introspection-zookeeper-consumer-sample</artifactId>
+    <name>Apache Dubbo Spring Boot :: Samples :: Service Introspection :: Zookeeper :: Consumer Sample</name>
+    <description>Apache Dubbo Spring Boot Service Introspection Zookeeper consumer Sample</description>
+    <packaging>jar</packaging>
 
     <dependencies>
-
         <!-- Spring Boot dependencies -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -43,18 +44,10 @@
             <version>${revision}</version>
         </dependency>
 
+        <!-- Apache Zookeeper -->
         <dependency>
-            <groupId>org.apache.dubbo.samples</groupId>
-            <artifactId>dubbo-spring-boot-sample-api</artifactId>
-            <version>${revision}</version>
-        </dependency>
-
-        <!-- Zookeeper dependencies -->
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-dependencies-zookeeper</artifactId>
-            <version>${dubbo.version}</version>
-            <type>pom</type>
+            <groupId>org.apache.zookeeper</groupId>
+            <artifactId>zookeeper</artifactId>
             <exclusions>
                 <exclusion>
                     <groupId>org.slf4j</groupId>
@@ -63,6 +56,26 @@
             </exclusions>
         </dependency>
 
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-x-discovery</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.dubbo.samples</groupId>
+            <artifactId>dubbo-spring-boot-sample-api</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
@@ -86,6 +99,4 @@
             </plugin>
         </plugins>
     </build>
-
-
 </project>
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboRegistryZooKeeperConsumerBootstrap.java b/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboZooKeeperServiceIntrospectionConsumerBootstrap.java
similarity index 77%
copy from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboRegistryZooKeeperConsumerBootstrap.java
copy to dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboZooKeeperServiceIntrospectionConsumerBootstrap.java
index 81829ca..7ab2eb7 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/demo/consumer/bootstrap/DubboRegistryZooKeeperConsumerBootstrap.java
+++ b/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboZooKeeperServiceIntrospectionConsumerBootstrap.java
@@ -14,10 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.consumer.bootstrap;
+package org.apache.dubbo.spring.boot.sample.consumer.bootstrap;
 
-import org.apache.dubbo.config.annotation.Reference;
-import org.apache.dubbo.spring.boot.demo.consumer.DemoService;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.spring.boot.sample.consumer.DemoService;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.ApplicationRunner;
@@ -29,15 +30,15 @@
  * Dubbo Registry ZooKeeper Consumer Bootstrap
  */
 @EnableAutoConfiguration
-public class DubboRegistryZooKeeperConsumerBootstrap {
+public class DubboZooKeeperServiceIntrospectionConsumerBootstrap {
 
     private final Logger logger = LoggerFactory.getLogger(getClass());
 
-    @Reference(version = "${demo.service.version}")
+    @DubboReference(version = "${demo.service.version}")
     private DemoService demoService;
 
     public static void main(String[] args) {
-        SpringApplication.run(DubboRegistryZooKeeperConsumerBootstrap.class).close();
+        SpringApplication.run(DubboZooKeeperServiceIntrospectionConsumerBootstrap.class).close();
     }
 
     @Bean
diff --git a/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/consumer-sample/src/main/resources/application.yml b/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/consumer-sample/src/main/resources/application.yml
new file mode 100644
index 0000000..fdabf9f
--- /dev/null
+++ b/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/consumer-sample/src/main/resources/application.yml
@@ -0,0 +1,16 @@
+spring:
+  application:
+    name: dubbo-zookeeper-service-introspection-consumer-sample
+
+demo:
+  service:
+    version: 1.0.0
+
+embedded:
+  zookeeper:
+    port: 2181
+
+dubbo:
+  registry:
+    address: zookeeper://127.0.0.1:${embedded.zookeeper.port}/?registry-type=service
+    file: ${user.home}/dubbo-cache/${spring.application.name}/dubbo.cache
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml b/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/pom.xml
similarity index 79%
copy from dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml
copy to dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/pom.xml
index 56badba..0efedbf 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml
+++ b/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/pom.xml
@@ -19,20 +19,18 @@
          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">
     <parent>
-        <artifactId>dubbo-spring-boot-samples</artifactId>
         <groupId>org.apache.dubbo.samples</groupId>
+        <artifactId>dubbo-spring-boot-service-introspection-samples</artifactId>
         <version>${revision}</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
-
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-spring-boot-registry-nacos-samples</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Registry Nacos</name>
-    <description>Apache Dubbo Spring Boot Registry Nacos Samples</description>
+    <artifactId>dubbo-spring-boot-service-introspection-zookeeper-samples</artifactId>
+    <name>Apache Dubbo Spring Boot :: Samples :: Service Introspection :: Zookeeper</name>
+    <description>Apache Dubbo Spring Boot Service Introspection Zookeeper Samples</description>
     <packaging>pom</packaging>
 
-
     <modules>
         <module>provider-sample</module>
         <module>consumer-sample</module>
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/pom.xml b/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/provider-sample/pom.xml
similarity index 72%
copy from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/pom.xml
copy to dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/provider-sample/pom.xml
index cb2179a..8f0a6d2 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/pom.xml
+++ b/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/provider-sample/pom.xml
@@ -15,22 +15,23 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
+<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">
     <parent>
         <groupId>org.apache.dubbo.samples</groupId>
-        <artifactId>dubbo-spring-boot-registry-zookeeper-samples</artifactId>
+        <artifactId>dubbo-spring-boot-service-introspection-zookeeper-samples</artifactId>
         <version>${revision}</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-spring-boot-registry-zookeeper-provider-sample</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Registry Zookeeper :: Provider Sample</name>
+    <artifactId>dubbo-spring-boot-service-introspection-zookeeper-provider-sample</artifactId>
+    <name>Apache Dubbo Spring Boot :: Samples :: Service Introspection :: Zookeeper :: Provider Sample</name>
+    <description>Apache Dubbo Spring Boot Service Introspection Zookeeper Provider Sample</description>
+    <packaging>jar</packaging>
 
     <dependencies>
-
         <!-- Spring Boot dependencies -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -43,18 +44,10 @@
             <version>${revision}</version>
         </dependency>
 
+        <!-- Apache Zookeeper -->
         <dependency>
-            <groupId>org.apache.dubbo.samples</groupId>
-            <artifactId>dubbo-spring-boot-sample-api</artifactId>
-            <version>${revision}</version>
-        </dependency>
-
-        <!-- Zookeeper dependencies -->
-        <dependency>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-dependencies-zookeeper</artifactId>
-            <version>${dubbo.version}</version>
-            <type>pom</type>
+            <groupId>org.apache.zookeeper</groupId>
+            <artifactId>zookeeper</artifactId>
             <exclusions>
                 <exclusion>
                     <groupId>org.slf4j</groupId>
@@ -63,6 +56,26 @@
             </exclusions>
         </dependency>
 
+        <dependency>
+            <groupId>org.apache.curator</groupId>
+            <artifactId>curator-x-discovery</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.dubbo.samples</groupId>
+            <artifactId>dubbo-spring-boot-sample-api</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
@@ -86,6 +99,4 @@
             </plugin>
         </plugins>
     </build>
-
-
 </project>
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboExternalizedConfigurationProviderBootstrap.java b/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboZookeeperServiceIntrospectionProviderBootstrap.java
similarity index 74%
copy from dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboExternalizedConfigurationProviderBootstrap.java
copy to dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboZookeeperServiceIntrospectionProviderBootstrap.java
index 2671f75..c1989d6 100644
--- a/dubbo-spring-boot-samples/externalized-configuration-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/bootstrap/DubboExternalizedConfigurationProviderBootstrap.java
+++ b/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboZookeeperServiceIntrospectionProviderBootstrap.java
@@ -14,23 +14,24 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.provider.bootstrap;
+package org.apache.dubbo.spring.boot.sample.provider.bootstrap;
 
-import org.apache.dubbo.spring.boot.demo.provider.service.DefaultDemoService;
+import org.apache.dubbo.spring.boot.sample.provider.service.DefaultDemoService;
+
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 
 /**
- * Dubbo Externalized Configuration Provider Bootstrap
+ * Dubbo Zookeeper Service-Introspection Provider Bootstrap
  *
  * @see DefaultDemoService
  * @since 2.7.0
  */
 @EnableAutoConfiguration
-public class DubboExternalizedConfigurationProviderBootstrap {
+public class DubboZookeeperServiceIntrospectionProviderBootstrap {
 
     public static void main(String[] args) {
-        new SpringApplicationBuilder(DubboExternalizedConfigurationProviderBootstrap.class)
+        new SpringApplicationBuilder(DubboZookeeperServiceIntrospectionProviderBootstrap.class)
                 .run(args);
     }
 }
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java b/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
similarity index 84%
copy from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
copy to dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
index bf5f80d..133ff47 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
+++ b/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
@@ -14,10 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.provider.service;
+package org.apache.dubbo.spring.boot.sample.provider.service;
 
-import org.apache.dubbo.config.annotation.Service;
-import org.apache.dubbo.spring.boot.demo.consumer.DemoService;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.apache.dubbo.spring.boot.sample.consumer.DemoService;
+
 import org.springframework.beans.factory.annotation.Value;
 
 /**
@@ -26,7 +27,7 @@
  * @see DemoService
  * @since 2.7.0
  */
-@Service(version = "${demo.service.version}")
+@DubboService(version = "${demo.service.version}")
 public class DefaultDemoService implements DemoService {
 
     /**
diff --git a/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/provider-sample/src/main/resources/application.properties b/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/provider-sample/src/main/resources/application.properties
new file mode 100644
index 0000000..844cd82
--- /dev/null
+++ b/dubbo-spring-boot-samples/service-introspection-samples/zookeeper-samples/provider-sample/src/main/resources/application.properties
@@ -0,0 +1,24 @@
+# Spring boot application
+spring.application.name=dubbo-zookeeper-service-introspection-provider-sample
+
+# Zookeeper Server Configuration
+zookeeper.server.host = 127.0.0.1
+zookeeper.server.port = 2181
+
+# Dubbo Spring Boot Externalization Configuration
+## Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service
+dubbo.scan.base-packages=org.apache.dubbo.spring.boot.sample.provider.service
+
+## The default value of dubbo.application.name is ${spring.application.name}
+## dubbo.application.name=${spring.application.name}
+
+## Dubbo Protocol
+dubbo.protocol.name=dubbo
+## Random port
+dubbo.protocol.port=-1
+
+## Dubbo Registry
+dubbo.registry.address=zookeeper://${zookeeper.server.host}:${zookeeper.server.port}?registry-type=service
+
+## DemoService version
+demo.service.version=1.0.0
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/servlet-container-samples/consumer-sample/pom.xml b/dubbo-spring-boot-samples/servlet-container-samples/consumer-sample/pom.xml
new file mode 100644
index 0000000..874a54a
--- /dev/null
+++ b/dubbo-spring-boot-samples/servlet-container-samples/consumer-sample/pom.xml
@@ -0,0 +1,115 @@
+<?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">
+    <parent>
+        <groupId>org.apache.dubbo.samples</groupId>
+        <artifactId>dubbo-spring-boot-servlet-container-samples</artifactId>
+        <version>${revision}</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>dubbo-spring-boot-servlet-container-consumer-sample</artifactId>
+    <name>Apache Dubbo Spring Boot :: Samples :: Servlet Container :: Consumer Sample</name>
+    <description>Apache Dubbo Spring Boot Servlet Container Consumer Sample</description>
+    <packaging>war</packaging>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <!-- Spring Boot dependencies -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-tomcat</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+
+        <!-- Dubbo Spring Boot dependencies -->
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-spring-boot-starter</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-spring-boot-actuator</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.dubbo.samples</groupId>
+            <artifactId>dubbo-spring-boot-sample-api</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <configuration>
+                    <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+
+            <!-- Tomcat 8 Maven 插件用于构建可执行 war -->
+            <!-- https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat8-maven-plugin -->
+            <plugin>
+                <groupId>org.apache.tomcat.maven</groupId>
+                <artifactId>tomcat8-maven-plugin</artifactId>
+                <version>3.0-r1655215</version>
+                <executions>
+                    <execution>
+                        <id>tomcat-run</id>
+                        <goals>
+                            <!-- 最终打包成可执行的jar包 -->
+                            <goal>exec-war-only</goal>
+                        </goals>
+                        <phase>package</phase>
+                        <configuration>
+                            <!-- ServletContext 路径 -->
+                            <path>/</path>
+                            <httpPort>9090</httpPort>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/servlet-container-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboServletContainerConsumerBootstrap.java b/dubbo-spring-boot-samples/servlet-container-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboServletContainerConsumerBootstrap.java
new file mode 100644
index 0000000..ec798a8
--- /dev/null
+++ b/dubbo-spring-boot-samples/servlet-container-samples/consumer-sample/src/main/java/org/apache/dubbo/spring/boot/sample/consumer/bootstrap/DubboServletContainerConsumerBootstrap.java
@@ -0,0 +1,55 @@
+/*
+ * 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.
+ */
+package org.apache.dubbo.spring.boot.sample.consumer.bootstrap;
+
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.spring.boot.sample.consumer.DemoService;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.WebApplicationType;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import static org.springframework.web.bind.annotation.RequestMethod.GET;
+
+@EnableAutoConfiguration
+@RestController
+public class DubboServletContainerConsumerBootstrap extends SpringBootServletInitializer {
+
+    @DubboReference(version = "${demo.service.version}", url = "${demo.service.url}")
+    private DemoService demoService;
+
+    @RequestMapping(value = "/say-hello", method = GET)
+    public String sayHello(@RequestParam String name) {
+        return demoService.sayHello(name);
+    }
+
+    @Override
+    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+        return application.sources(getClass());
+    }
+
+    public static void main(String[] args) { // Run as the generic Spring Boot Web(Servlet) Application
+        SpringApplication application = new SpringApplication(DubboServletContainerConsumerBootstrap.class);
+        application.setWebApplicationType(WebApplicationType.SERVLET);
+        application.run(args);
+    }
+}
diff --git a/dubbo-spring-boot-samples/servlet-container-samples/consumer-sample/src/main/resources/application.yml b/dubbo-spring-boot-samples/servlet-container-samples/consumer-sample/src/main/resources/application.yml
new file mode 100644
index 0000000..dffb18b
--- /dev/null
+++ b/dubbo-spring-boot-samples/servlet-container-samples/consumer-sample/src/main/resources/application.yml
@@ -0,0 +1,8 @@
+spring:
+  application:
+    name: dubbo-servlet-container-consumer-sample
+
+demo:
+  service:
+    version: 1.0.0
+    url: dubbo://127.0.0.1:23456
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml b/dubbo-spring-boot-samples/servlet-container-samples/pom.xml
similarity index 69%
copy from dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml
copy to dubbo-spring-boot-samples/servlet-container-samples/pom.xml
index 56badba..3bc24d4 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-nacos-samples/pom.xml
+++ b/dubbo-spring-boot-samples/servlet-container-samples/pom.xml
@@ -19,23 +19,33 @@
          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">
     <parent>
-        <artifactId>dubbo-spring-boot-samples</artifactId>
         <groupId>org.apache.dubbo.samples</groupId>
+        <artifactId>dubbo-spring-boot-samples</artifactId>
         <version>${revision}</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
-
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>dubbo-spring-boot-registry-nacos-samples</artifactId>
-    <name>Apache Dubbo Spring Boot :: Samples : Registry Nacos</name>
-    <description>Apache Dubbo Spring Boot Registry Nacos Samples</description>
+    <artifactId>dubbo-spring-boot-servlet-container-samples</artifactId>
+    <name>Apache Dubbo Spring Boot :: Samples :: Servlet Container</name>
+    <description>Apache Dubbo Spring Boot Servlet Container Samples</description>
     <packaging>pom</packaging>
 
-
     <modules>
         <module>provider-sample</module>
         <module>consumer-sample</module>
     </modules>
 
+    <pluginRepositories>
+        <pluginRepository>
+            <!-- tomcat8-maven-plugin 所在仓库 -->
+            <id>Alfresco</id>
+            <name>Alfresco Repository</name>
+            <url>https://artifacts.alfresco.com/nexus/content/repositories/public/</url>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </pluginRepository>
+    </pluginRepositories>
+
 </project>
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/servlet-container-samples/provider-sample/pom.xml b/dubbo-spring-boot-samples/servlet-container-samples/provider-sample/pom.xml
new file mode 100644
index 0000000..463804d
--- /dev/null
+++ b/dubbo-spring-boot-samples/servlet-container-samples/provider-sample/pom.xml
@@ -0,0 +1,115 @@
+<?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">
+    <parent>
+        <groupId>org.apache.dubbo.samples</groupId>
+        <artifactId>dubbo-spring-boot-servlet-container-samples</artifactId>
+        <version>${revision}</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>dubbo-spring-boot-servlet-container-provider-sample</artifactId>
+    <name>Apache Dubbo Spring Boot :: Samples :: Servlet Container :: Provider Sample</name>
+    <description>Apache Dubbo Spring Boot Servlet Container Provider Sample</description>
+    <packaging>war</packaging>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <!-- Spring Boot dependencies -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-tomcat</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+
+        <!-- Dubbo Spring Boot dependencies -->
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-spring-boot-starter</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.dubbo</groupId>
+            <artifactId>dubbo-spring-boot-actuator</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.dubbo.samples</groupId>
+            <artifactId>dubbo-spring-boot-sample-api</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <configuration>
+                    <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+
+            <!-- Tomcat 8 Maven 插件用于构建可执行 war -->
+            <!-- https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat8-maven-plugin -->
+            <plugin>
+                <groupId>org.apache.tomcat.maven</groupId>
+                <artifactId>tomcat8-maven-plugin</artifactId>
+                <version>3.0-r1655215</version>
+                <executions>
+                    <execution>
+                        <id>tomcat-run</id>
+                        <goals>
+                            <!-- 最终打包成可执行的jar包 -->
+                            <goal>exec-war-only</goal>
+                        </goals>
+                        <phase>package</phase>
+                        <configuration>
+                            <!-- ServletContext 路径 -->
+                            <path>/</path>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
\ No newline at end of file
diff --git a/dubbo-spring-boot-samples/servlet-container-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboServletContainerProviderBootstrap.java b/dubbo-spring-boot-samples/servlet-container-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboServletContainerProviderBootstrap.java
new file mode 100644
index 0000000..47c0a92
--- /dev/null
+++ b/dubbo-spring-boot-samples/servlet-container-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/bootstrap/DubboServletContainerProviderBootstrap.java
@@ -0,0 +1,60 @@
+/*
+ * 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.
+ */
+package org.apache.dubbo.spring.boot.sample.provider.bootstrap;
+
+import org.apache.dubbo.spring.boot.sample.consumer.DemoService;
+import org.apache.dubbo.spring.boot.sample.provider.service.DefaultDemoService;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.WebApplicationType;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * Dubbo Servlet Container Provider Bootstrap
+ *
+ * @see DefaultDemoService
+ * @since 2.7.7
+ */
+@EnableAutoConfiguration
+@RestController
+public class DubboServletContainerProviderBootstrap extends SpringBootServletInitializer {
+
+    @Autowired
+    private DemoService demoService;
+
+    @RequestMapping("/say/{name}")
+    public String say(@PathVariable String name) {
+        return demoService.sayHello(name);
+    }
+
+    @Override
+    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
+        return application.sources(getClass());
+    }
+
+    public static void main(String[] args) { // Run as the generic Spring Boot Web(Servlet) Application
+        SpringApplication application = new SpringApplication(DubboServletContainerProviderBootstrap.class);
+        application.setWebApplicationType(WebApplicationType.SERVLET);
+        application.run(args);
+    }
+}
diff --git a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java b/dubbo-spring-boot-samples/servlet-container-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
similarity index 83%
copy from dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
copy to dubbo-spring-boot-samples/servlet-container-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
index bf5f80d..fa6433a 100644
--- a/dubbo-spring-boot-samples/dubbo-registry-zookeeper-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/demo/provider/service/DefaultDemoService.java
+++ b/dubbo-spring-boot-samples/servlet-container-samples/provider-sample/src/main/java/org/apache/dubbo/spring/boot/sample/provider/service/DefaultDemoService.java
@@ -14,19 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.spring.boot.demo.provider.service;
+package org.apache.dubbo.spring.boot.sample.provider.service;
 
-import org.apache.dubbo.config.annotation.Service;
-import org.apache.dubbo.spring.boot.demo.consumer.DemoService;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.apache.dubbo.spring.boot.sample.consumer.DemoService;
+
 import org.springframework.beans.factory.annotation.Value;
 
 /**
  * Default {@link DemoService}
  *
  * @see DemoService
- * @since 2.7.0
+ * @since 2.7.7
  */
-@Service(version = "${demo.service.version}")
+@DubboService(version = "${demo.service.version}")
 public class DefaultDemoService implements DemoService {
 
     /**
diff --git a/dubbo-spring-boot-samples/servlet-container-samples/provider-sample/src/main/resources/application.properties b/dubbo-spring-boot-samples/servlet-container-samples/provider-sample/src/main/resources/application.properties
new file mode 100644
index 0000000..fe474ca
--- /dev/null
+++ b/dubbo-spring-boot-samples/servlet-container-samples/provider-sample/src/main/resources/application.properties
@@ -0,0 +1,16 @@
+# Spring boot application
+spring.application.name=dubbo-spring-boot-servlet-container-provider-sample
+# Base packages to scan Dubbo Component: @org.apache.dubbo.config.annotation.Service
+dubbo.scan.base-packages=org.apache.dubbo.spring.boot.sample.provider.service
+
+# Dubbo Application
+
+# Dubbo Protocol
+dubbo.protocol.name=dubbo
+dubbo.protocol.port=23456
+
+## Dubbo Registry
+dubbo.registry.address=N/A
+
+## DemoService version
+demo.service.version=1.0.0
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 65c8653..9d9ad3c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,7 +38,7 @@
     <properties>
         <maven_javadoc_version>3.0.1</maven_javadoc_version>
         <maven_surefire_version>2.19.1</maven_surefire_version>
-        <revision>2.7.6</revision>
+        <revision>2.7.7</revision>
     </properties>
 
     <modules>
@@ -90,8 +90,8 @@
     </mailingLists>
     <developers>
         <developer>
-            <id>Apache Dubbo</id>
-            <name>The Apache Dubbo Project Contributors</name>
+            <id>Apache Dubbo </id>
+            <name>The Apache Dubbo  Project Contributors</name>
             <email>dev@dubbo.apache.org</email>
             <url>http://dubbo.apache.org</url>
         </developer>
