diff --git a/dubbo-samples-annotation/README.md b/dubbo-samples-annotation/README.md
index fabf4a3..f5315cc 100644
--- a/dubbo-samples-annotation/README.md
+++ b/dubbo-samples-annotation/README.md
@@ -14,10 +14,10 @@
 
 `@EnableDubbo` will enable Spring `org.apache.dubbo.samples.annotation.impl` package to find anything annotated by Dubbo annotation.
 
-As a provider, the interface implementation class have to be annotated by `@Service`:
+As a provider, the interface implementation class have to be annotated by `@DubboService`:
 
 ```Java
-@Service
+@DubboService
 public class AnnotatedGreetingService implements GreetingService {
 
     public String sayHello(String name) {
@@ -42,13 +42,13 @@
 }
 ```
 
-And you can use `@Reference` annotation to autowire the provider into consumer:
+And you can use `@DubboReference` annotation to autowire the provider into consumer:
 
 ```Java
 @Component("annotatedConsumer")
 public class GreetingServiceConsumer {
 
-    @Reference
+    @DubboReference
     private GreetingService greetingService;
     
     ...
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/action/AnnotationAction.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/action/AnnotationAction.java
index 1cdbb84..eacae3b 100644
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/action/AnnotationAction.java
+++ b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/action/AnnotationAction.java
@@ -19,18 +19,17 @@
 
 package org.apache.dubbo.samples.annotation.action;
 
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.Method;
-import org.apache.dubbo.config.annotation.Reference;
 import org.apache.dubbo.samples.annotation.AnnotationConstants;
 import org.apache.dubbo.samples.annotation.api.GreetingService;
 import org.apache.dubbo.samples.annotation.api.HelloService;
-
 import org.springframework.stereotype.Component;
 
 @Component("annotationAction")
 public class AnnotationAction {
 
-    @Reference(interfaceClass = HelloService.class, version = AnnotationConstants.VERSION /*,
+    @DubboReference(interfaceClass = HelloService.class, version = AnnotationConstants.VERSION /*,
             methods = {
                     @Method(
                             name = "sayHello",
@@ -42,7 +41,7 @@
     )
     private HelloService helloService;
 
-    @Reference(interfaceClass = GreetingService.class,
+    @DubboReference(interfaceClass = GreetingService.class,
             version = AnnotationConstants.VERSION,
             timeout = 1000,
             methods = {@Method(name = "greeting", timeout = 3000, retries = 1)})
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationGreetingServiceImpl.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationGreetingServiceImpl.java
index 6bea0e2..a5cb300 100644
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationGreetingServiceImpl.java
+++ b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationGreetingServiceImpl.java
@@ -16,11 +16,11 @@
  */
 package org.apache.dubbo.samples.annotation.impl;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.samples.annotation.AnnotationConstants;
 import org.apache.dubbo.samples.annotation.api.GreetingService;
 
-@Service(version = AnnotationConstants.VERSION)
+@DubboService(version = AnnotationConstants.VERSION)
 public class AnnotationGreetingServiceImpl implements GreetingService {
 
     @Override
diff --git a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationHelloServiceImpl.java b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationHelloServiceImpl.java
index b0e0f92..a192486 100644
--- a/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationHelloServiceImpl.java
+++ b/dubbo-samples-annotation/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationHelloServiceImpl.java
@@ -17,12 +17,12 @@
 package org.apache.dubbo.samples.annotation.impl;
 
 
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.config.annotation.Method;
-import org.apache.dubbo.config.annotation.Service;
 import org.apache.dubbo.samples.annotation.AnnotationConstants;
 import org.apache.dubbo.samples.annotation.api.HelloService;
 
-@Service(version = AnnotationConstants.VERSION, methods = {@Method(name = "sayGoodbye", timeout = 250, retries = 0)})
+@DubboService(version = AnnotationConstants.VERSION, methods = {@Method(name = "sayGoodbye", timeout = 250, retries = 0)})
 public class AnnotationHelloServiceImpl implements HelloService {
 
     @Override
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/action/AnnotationAction.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/action/AnnotationAction.java
index 218c0e3..0639d12 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/action/AnnotationAction.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/action/AnnotationAction.java
@@ -19,15 +19,14 @@
 
 package org.apache.dubbo.samples.configcenter.annotation.action;
 
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.samples.configcenter.annotation.api.AnnotationService;
-
 import org.springframework.stereotype.Component;
 
 @Component("annotationAction")
 public class AnnotationAction {
 
-    @Reference(version = "1.0.0")
+    @DubboReference(version = "1.0.0")
     private AnnotationService annotationService;
 
     public String doSayHello(String name) {
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/impl/AnnotationServiceImpl.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/impl/AnnotationServiceImpl.java
index 4ef914c..5559647 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/impl/AnnotationServiceImpl.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-annotation/src/main/java/org/apache/dubbo/samples/configcenter/annotation/impl/AnnotationServiceImpl.java
@@ -19,10 +19,10 @@
 
 package org.apache.dubbo.samples.configcenter.annotation.impl;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.samples.configcenter.annotation.api.AnnotationService;
 
-@Service(version = "1.0.0")
+@DubboService(version = "1.0.0")
 public class AnnotationServiceImpl implements AnnotationService {
 
     @Override
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/consumer/AnnotationAction.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/consumer/AnnotationAction.java
index fd08a09..45c5eee 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/consumer/AnnotationAction.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/consumer/AnnotationAction.java
@@ -19,15 +19,14 @@
 
 package org.apache.dubbo.samples.externalconfiguration.consumer;
 
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.samples.externalconfiguration.service.AnnotationService;
-
 import org.springframework.stereotype.Component;
 
 @Component("annotationAction")
 public class AnnotationAction {
 
-    @Reference(version = "1.0.0")
+    @DubboReference(version = "1.0.0")
     private AnnotationService annotationService;
 
     public String doSayHello(String name) {
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/service/AnnotationServiceImpl.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/service/AnnotationServiceImpl.java
index 547537a..efa6c06 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/service/AnnotationServiceImpl.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-externalconfiguration/src/main/java/org/apache/dubbo/samples/externalconfiguration/service/AnnotationServiceImpl.java
@@ -16,9 +16,9 @@
  */
 package org.apache.dubbo.samples.externalconfiguration.service;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 
-@Service(version = "1.0.0")
+@DubboService(version = "1.0.0")
 public class AnnotationServiceImpl implements AnnotationService {
 
     @Override
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/configcenter/multiregistries/action/AnnotationAction.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/configcenter/multiregistries/action/AnnotationAction.java
index c1d1515..3b014a8 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/configcenter/multiregistries/action/AnnotationAction.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/configcenter/multiregistries/action/AnnotationAction.java
@@ -19,15 +19,14 @@
 
 package org.apache.dubbo.samples.configcenter.multiregistries.action;
 
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.samples.configcenter.multiregistries.api.AnnotationService;
-
 import org.springframework.stereotype.Component;
 
 @Component("annotationAction")
 public class AnnotationAction {
 
-    @Reference
+    @DubboReference
     private AnnotationService annotationService;
 
     public String doSayHello(String name) {
diff --git a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/configcenter/multiregistries/impl/AnnotationServiceImpl.java b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/configcenter/multiregistries/impl/AnnotationServiceImpl.java
index 75eb9ce..0ca048a 100644
--- a/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/configcenter/multiregistries/impl/AnnotationServiceImpl.java
+++ b/dubbo-samples-configcenter/dubbo-samples-configcenter-multi-registries/src/main/java/org/apache/dubbo/samples/configcenter/multiregistries/impl/AnnotationServiceImpl.java
@@ -19,10 +19,10 @@
 
 package org.apache.dubbo.samples.configcenter.multiregistries.impl;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.samples.configcenter.multiregistries.api.AnnotationService;
 
-@Service
+@DubboService
 public class AnnotationServiceImpl implements AnnotationService {
 
     @Override
diff --git a/dubbo-samples-edas/dubbo-samples-edas-consumer/src/main/java/org/apache/dubbo/samples/edas/consumer/DubboConsumerController.java b/dubbo-samples-edas/dubbo-samples-edas-consumer/src/main/java/org/apache/dubbo/samples/edas/consumer/DubboConsumerController.java
index 00bcd6d..d96c5d5 100644
--- a/dubbo-samples-edas/dubbo-samples-edas-consumer/src/main/java/org/apache/dubbo/samples/edas/consumer/DubboConsumerController.java
+++ b/dubbo-samples-edas/dubbo-samples-edas-consumer/src/main/java/org/apache/dubbo/samples/edas/consumer/DubboConsumerController.java
@@ -18,7 +18,7 @@
 
 package org.apache.dubbo.samples.edas.consumer;
 
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.samples.edas.GreetingService;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -27,7 +27,7 @@
 @RestController
 public class DubboConsumerController {
 
-    @Reference(version = "1.0.0.daily", check = false)
+    @DubboReference(version = "1.0.0.daily", check = false)
     private GreetingService demoService;
 
     @RequestMapping("/sayHello/{name}")
diff --git a/dubbo-samples-edas/dubbo-samples-edas-provider/src/main/java/org/apache/dubbo/samples/edas/GreetingServiceImpl.java b/dubbo-samples-edas/dubbo-samples-edas-provider/src/main/java/org/apache/dubbo/samples/edas/GreetingServiceImpl.java
index d11bb97..39fa499 100644
--- a/dubbo-samples-edas/dubbo-samples-edas-provider/src/main/java/org/apache/dubbo/samples/edas/GreetingServiceImpl.java
+++ b/dubbo-samples-edas/dubbo-samples-edas-provider/src/main/java/org/apache/dubbo/samples/edas/GreetingServiceImpl.java
@@ -19,9 +19,9 @@
 package org.apache.dubbo.samples.edas;
 
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 
-@Service(version = "1.0.0.daily")
+@DubboService(version = "1.0.0.daily")
 public class GreetingServiceImpl implements GreetingService {
 
     public String sayHello(String name) {
diff --git a/dubbo-samples-edas/dubbo-samples-edas-provider/src/main/resources/application.properties b/dubbo-samples-edas/dubbo-samples-edas-provider/src/main/resources/application.properties
index 1c1a2cc..3476060 100644
--- a/dubbo-samples-edas/dubbo-samples-edas-provider/src/main/resources/application.properties
+++ b/dubbo-samples-edas/dubbo-samples-edas-provider/src/main/resources/application.properties
@@ -1,4 +1,4 @@
-# Base packages to scan Dubbo Components (e.g @Service , @Reference)
+# Base packages to scan Dubbo Components (e.g @DubboService , @DubboReference)
 dubbo.scan.basePackages=org.apache.dubbo.samples.edas
 dubbo.application.name=dubbo-provider-demo
 dubbo.registry.address=edas://127.0.0.1:8080
\ No newline at end of file
diff --git a/dubbo-samples-edas/dubbo-samples-edas-provider/src/test/java/org/apache/dubbo/samples/edas/DubboConsumer.java b/dubbo-samples-edas/dubbo-samples-edas-provider/src/test/java/org/apache/dubbo/samples/edas/DubboConsumer.java
index 5ca2456..90cd33d 100644
--- a/dubbo-samples-edas/dubbo-samples-edas-provider/src/test/java/org/apache/dubbo/samples/edas/DubboConsumer.java
+++ b/dubbo-samples-edas/dubbo-samples-edas-provider/src/test/java/org/apache/dubbo/samples/edas/DubboConsumer.java
@@ -18,10 +18,9 @@
 
 package org.apache.dubbo.samples.edas;
 
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
 import org.apache.dubbo.samples.edas.provider.DubboProvider;
-
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
@@ -33,7 +32,7 @@
 @ConditionalOnBean(DubboProvider.class)
 public class DubboConsumer {
 
-    @Reference(version = "1.0.0.daily", injvm = false, check = false)
+    @DubboReference(version = "1.0.0.daily", injvm = false, check = false)
     private GreetingService demoService;
 
     public static void main(String[] args) {
diff --git a/dubbo-samples-metadata-report/dubbo-samples-metadata-report-configcenter/src/main/java/org/apache/dubbo/samples/metadatareport/configcenter/action/AnnotationAction.java b/dubbo-samples-metadata-report/dubbo-samples-metadata-report-configcenter/src/main/java/org/apache/dubbo/samples/metadatareport/configcenter/action/AnnotationAction.java
index cd79919..a9d62c3 100644
--- a/dubbo-samples-metadata-report/dubbo-samples-metadata-report-configcenter/src/main/java/org/apache/dubbo/samples/metadatareport/configcenter/action/AnnotationAction.java
+++ b/dubbo-samples-metadata-report/dubbo-samples-metadata-report-configcenter/src/main/java/org/apache/dubbo/samples/metadatareport/configcenter/action/AnnotationAction.java
@@ -19,15 +19,14 @@
 
 package org.apache.dubbo.samples.metadatareport.configcenter.action;
 
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.samples.metadatareport.configcenter.api.AnnotationService;
-
 import org.springframework.stereotype.Component;
 
 @Component("annotationAction")
 public class AnnotationAction {
 
-    @Reference(version = "1.1.1", group = "d-test", init = true)
+    @DubboReference(version = "1.1.1", group = "d-test", init = true)
     private AnnotationService annotationService;
 
     public String doSayHello(String name) {
diff --git a/dubbo-samples-metadata-report/dubbo-samples-metadata-report-configcenter/src/main/java/org/apache/dubbo/samples/metadatareport/configcenter/impl/AnnotationServiceImpl.java b/dubbo-samples-metadata-report/dubbo-samples-metadata-report-configcenter/src/main/java/org/apache/dubbo/samples/metadatareport/configcenter/impl/AnnotationServiceImpl.java
index 37a1ca9..f37ff4d 100644
--- a/dubbo-samples-metadata-report/dubbo-samples-metadata-report-configcenter/src/main/java/org/apache/dubbo/samples/metadatareport/configcenter/impl/AnnotationServiceImpl.java
+++ b/dubbo-samples-metadata-report/dubbo-samples-metadata-report-configcenter/src/main/java/org/apache/dubbo/samples/metadatareport/configcenter/impl/AnnotationServiceImpl.java
@@ -19,10 +19,10 @@
 
 package org.apache.dubbo.samples.metadatareport.configcenter.impl;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.samples.metadatareport.configcenter.api.AnnotationService;
 
-@Service(version = "1.1.1", group = "d-test")
+@DubboService(version = "1.1.1", group = "d-test")
 public class AnnotationServiceImpl implements AnnotationService {
 
     @Override
diff --git a/dubbo-samples-metadata-report/dubbo-samples-metadata-report-local-annotation/src/main/java/org/apache/dubbo/samples/metadatareport/local/annotation/action/AnnotationAction.java b/dubbo-samples-metadata-report/dubbo-samples-metadata-report-local-annotation/src/main/java/org/apache/dubbo/samples/metadatareport/local/annotation/action/AnnotationAction.java
index 677e458..82aff20 100644
--- a/dubbo-samples-metadata-report/dubbo-samples-metadata-report-local-annotation/src/main/java/org/apache/dubbo/samples/metadatareport/local/annotation/action/AnnotationAction.java
+++ b/dubbo-samples-metadata-report/dubbo-samples-metadata-report-local-annotation/src/main/java/org/apache/dubbo/samples/metadatareport/local/annotation/action/AnnotationAction.java
@@ -19,15 +19,14 @@
 
 package org.apache.dubbo.samples.metadatareport.local.annotation.action;
 
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.samples.metadatareport.local.annotation.api.AnnotationService;
-
 import org.springframework.stereotype.Component;
 
 @Component("annotationAction")
 public class AnnotationAction {
 
-    @Reference(version = "1.1.8", group = "d-test", init = true)
+    @DubboReference(version = "1.1.8", group = "d-test", init = true)
     private AnnotationService annotationService;
 
     public String doSayHello(String name) {
diff --git a/dubbo-samples-metadata-report/dubbo-samples-metadata-report-local-annotation/src/main/java/org/apache/dubbo/samples/metadatareport/local/annotation/impl/AnnotationServiceImpl.java b/dubbo-samples-metadata-report/dubbo-samples-metadata-report-local-annotation/src/main/java/org/apache/dubbo/samples/metadatareport/local/annotation/impl/AnnotationServiceImpl.java
index 3f41bd5..022dbd5 100644
--- a/dubbo-samples-metadata-report/dubbo-samples-metadata-report-local-annotation/src/main/java/org/apache/dubbo/samples/metadatareport/local/annotation/impl/AnnotationServiceImpl.java
+++ b/dubbo-samples-metadata-report/dubbo-samples-metadata-report-local-annotation/src/main/java/org/apache/dubbo/samples/metadatareport/local/annotation/impl/AnnotationServiceImpl.java
@@ -19,10 +19,10 @@
 
 package org.apache.dubbo.samples.metadatareport.local.annotation.impl;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.samples.metadatareport.local.annotation.api.AnnotationService;
 
-@Service(version = "1.1.8", group = "d-test")
+@DubboService(version = "1.1.8", group = "d-test")
 public class AnnotationServiceImpl implements AnnotationService {
 
     @Override
diff --git a/dubbo-samples-nacos/dubbo-samples-nacos-registry/src/main/java/org/apache/dubbo/samples/action/GreetingServiceConsumer.java b/dubbo-samples-nacos/dubbo-samples-nacos-registry/src/main/java/org/apache/dubbo/samples/action/GreetingServiceConsumer.java
index 57c23fb..d7ce9dd 100644
--- a/dubbo-samples-nacos/dubbo-samples-nacos-registry/src/main/java/org/apache/dubbo/samples/action/GreetingServiceConsumer.java
+++ b/dubbo-samples-nacos/dubbo-samples-nacos-registry/src/main/java/org/apache/dubbo/samples/action/GreetingServiceConsumer.java
@@ -19,14 +19,14 @@
 
 package org.apache.dubbo.samples.action;
 
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.samples.api.GreetingService;
 import org.springframework.stereotype.Component;
 
 @Component("annotatedConsumer")
 public class GreetingServiceConsumer {
 
-    @Reference(version = "1.0.0")
+    @DubboReference(version = "1.0.0")
     private GreetingService greetingService;
 
     public String doSayHello(String name) {
diff --git a/dubbo-samples-nacos/dubbo-samples-nacos-registry/src/main/java/org/apache/dubbo/samples/impl/AnnotatedGreetingService.java b/dubbo-samples-nacos/dubbo-samples-nacos-registry/src/main/java/org/apache/dubbo/samples/impl/AnnotatedGreetingService.java
index 6cd92ee..ae18b1d 100644
--- a/dubbo-samples-nacos/dubbo-samples-nacos-registry/src/main/java/org/apache/dubbo/samples/impl/AnnotatedGreetingService.java
+++ b/dubbo-samples-nacos/dubbo-samples-nacos-registry/src/main/java/org/apache/dubbo/samples/impl/AnnotatedGreetingService.java
@@ -19,10 +19,10 @@
 
 package org.apache.dubbo.samples.impl;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.samples.api.GreetingService;
 
-@Service(version = "1.0.0")
+@DubboService(version = "1.0.0")
 public class AnnotatedGreetingService implements GreetingService {
 
     public String sayHello(String name) {
diff --git a/dubbo-samples-protostuff/dubbo-samples-protostuff-consumer/src/main/java/org/dubbo/samples/protostuff/consumer/controller/UserController.java b/dubbo-samples-protostuff/dubbo-samples-protostuff-consumer/src/main/java/org/dubbo/samples/protostuff/consumer/controller/UserController.java
index 7f7e44f..b76319e 100644
--- a/dubbo-samples-protostuff/dubbo-samples-protostuff-consumer/src/main/java/org/dubbo/samples/protostuff/consumer/controller/UserController.java
+++ b/dubbo-samples-protostuff/dubbo-samples-protostuff-consumer/src/main/java/org/dubbo/samples/protostuff/consumer/controller/UserController.java
@@ -17,8 +17,7 @@
 
 package org.dubbo.samples.protostuff.consumer.controller;
 
-import org.apache.dubbo.config.annotation.Reference;
-
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.dubbo.samples.protostuff.api.IUserService;
 import org.dubbo.samples.protostuff.domain.UserInfo;
 import org.springframework.stereotype.Controller;
@@ -28,7 +27,7 @@
 @Controller
 public class UserController {
 
-    @Reference(check = false)
+    @DubboReference(check = false)
     private IUserService userService;
 
     @RequestMapping(value = "/test")
diff --git a/dubbo-samples-protostuff/dubbo-samples-protostuff-provider/src/main/java/org/dubbo/samples/protostuff/provider/service/UserService.java b/dubbo-samples-protostuff/dubbo-samples-protostuff-provider/src/main/java/org/dubbo/samples/protostuff/provider/service/UserService.java
index 5f0bf05..ba7b07b 100644
--- a/dubbo-samples-protostuff/dubbo-samples-protostuff-provider/src/main/java/org/dubbo/samples/protostuff/provider/service/UserService.java
+++ b/dubbo-samples-protostuff/dubbo-samples-protostuff-provider/src/main/java/org/dubbo/samples/protostuff/provider/service/UserService.java
@@ -17,14 +17,13 @@
 
 package org.dubbo.samples.protostuff.provider.service;
 
-import org.apache.dubbo.config.annotation.Service;
-
+import org.apache.dubbo.config.annotation.DubboService;
 import org.dubbo.samples.protostuff.api.IUserService;
 import org.dubbo.samples.protostuff.domain.UserInfo;
 
 import java.util.UUID;
 
-@Service(protocol = "dubbo", dynamic = true)
+@DubboService(protocol = "dubbo", dynamic = true)
 public class UserService implements IUserService {
 
     @Override
diff --git a/dubbo-samples-protostuff/dubbo-samples-protostuff-provider/src/test/java/org/dubbo/samples/protostuff/consumer/ConsumerBean.java b/dubbo-samples-protostuff/dubbo-samples-protostuff-provider/src/test/java/org/dubbo/samples/protostuff/consumer/ConsumerBean.java
index a9b449a..1c25384 100644
--- a/dubbo-samples-protostuff/dubbo-samples-protostuff-provider/src/test/java/org/dubbo/samples/protostuff/consumer/ConsumerBean.java
+++ b/dubbo-samples-protostuff/dubbo-samples-protostuff-provider/src/test/java/org/dubbo/samples/protostuff/consumer/ConsumerBean.java
@@ -17,15 +17,14 @@
 
 package org.dubbo.samples.protostuff.consumer;
 
-import org.apache.dubbo.config.annotation.Reference;
-
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.dubbo.samples.protostuff.api.IUserService;
 import org.dubbo.samples.protostuff.domain.UserInfo;
 import org.springframework.stereotype.Component;
 
 @Component
 public class ConsumerBean {
-    @Reference
+    @DubboReference
     private IUserService userService;
 
     public UserInfo insertUserInfo(String name) {
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/action/AnnotationAction.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/action/AnnotationAction.java
index 5418447..16509b9 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/action/AnnotationAction.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/action/AnnotationAction.java
@@ -19,23 +19,22 @@
 
 package org.apache.dubbo.samples.resilience4j.action;
 
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.samples.resilience4j.api.AnnotationService;
 import org.apache.dubbo.samples.resilience4j.api.CircuitBreakerService;
 import org.apache.dubbo.samples.resilience4j.api.RateLimiterService;
-
 import org.springframework.stereotype.Component;
 
 @Component("annotationAction")
 public class AnnotationAction {
 
-    @Reference(interfaceClass = AnnotationService.class)
+    @DubboReference(interfaceClass = AnnotationService.class)
     private AnnotationService annotationService;
 
-    @Reference(interfaceClass = CircuitBreakerService.class)
+    @DubboReference(interfaceClass = CircuitBreakerService.class)
     private CircuitBreakerService circuitBreakerService;
 
-    @Reference(interfaceClass = RateLimiterService.class)
+    @DubboReference(interfaceClass = RateLimiterService.class)
     private RateLimiterService rateLimiterService;
 
     public String doSayHello(String name) {
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/AnnotationServiceImpl.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/AnnotationServiceImpl.java
index 18729bf..6ab9090 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/AnnotationServiceImpl.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/AnnotationServiceImpl.java
@@ -19,10 +19,10 @@
 
 package org.apache.dubbo.samples.resilience4j.impl;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.samples.resilience4j.api.AnnotationService;
 
-@Service(interfaceClass = AnnotationService.class)
+@DubboService(interfaceClass = AnnotationService.class)
 public class AnnotationServiceImpl implements AnnotationService {
 
     //    @HystrixCommand(commandProperties = { @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/CircuitBreakerServiceImpl.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/CircuitBreakerServiceImpl.java
index 3b0aa38..5e5c48e 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/CircuitBreakerServiceImpl.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/CircuitBreakerServiceImpl.java
@@ -18,12 +18,12 @@
  */
 package org.apache.dubbo.samples.resilience4j.impl;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.samples.resilience4j.api.CircuitBreakerService;
 
 import java.util.concurrent.atomic.AtomicLong;
 
-@Service(interfaceClass = CircuitBreakerService.class)
+@DubboService(interfaceClass = CircuitBreakerService.class)
 public class CircuitBreakerServiceImpl implements CircuitBreakerService {
     private AtomicLong count = new AtomicLong(0);
 
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/RateLimiterServiceImpl.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/RateLimiterServiceImpl.java
index 213a327..3b57acf 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/RateLimiterServiceImpl.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-filter/src/main/java/org/apache/dubbo/samples/resilience4j/impl/RateLimiterServiceImpl.java
@@ -18,10 +18,10 @@
  */
 package org.apache.dubbo.samples.resilience4j.impl;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.samples.resilience4j.api.RateLimiterService;
 
-@Service(interfaceClass = RateLimiterService.class)
+@DubboService(interfaceClass = RateLimiterService.class)
 public class RateLimiterServiceImpl implements RateLimiterService {
     @Override
     public String say(String name, String value) {
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/consumer/action/AnnotationAction.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/consumer/action/AnnotationAction.java
index e1a073a..96b5ad3 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/consumer/action/AnnotationAction.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/consumer/action/AnnotationAction.java
@@ -19,7 +19,7 @@
 
 package org.apache.dubbo.samples.resilience4jboot2.consumer.action;
 
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.samples.resilience4jboot2.api.AnnotationService;
 import org.springframework.stereotype.Component;
 
@@ -29,7 +29,7 @@
 @Component("annotationAction")
 public class AnnotationAction {
 
-    @Reference(interfaceClass = AnnotationService.class)
+    @DubboReference(interfaceClass = AnnotationService.class)
     private AnnotationService annotationService;
 
     public String doSayHello(String name) {
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/consumer/action/CircuitBreakMethodWrapper.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/consumer/action/CircuitBreakMethodWrapper.java
index c2c08be..9d2f386 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/consumer/action/CircuitBreakMethodWrapper.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/consumer/action/CircuitBreakMethodWrapper.java
@@ -19,7 +19,7 @@
 package org.apache.dubbo.samples.resilience4jboot2.consumer.action;
 
 import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.samples.resilience4jboot2.api.CircuitBreakerService;
 import org.springframework.stereotype.Component;
 
@@ -28,7 +28,7 @@
  */
 @Component("circuitBreakMethodWrapper")
 public class CircuitBreakMethodWrapper {
-    @Reference(interfaceClass = CircuitBreakerService.class)
+    @DubboReference(interfaceClass = CircuitBreakerService.class)
     private CircuitBreakerService circuitBreakerService;
 
     @CircuitBreaker(name = "backendB")
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/consumer/action/CircuitBreakTypeWrapper.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/consumer/action/CircuitBreakTypeWrapper.java
index 8cff9f2..5df0816 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/consumer/action/CircuitBreakTypeWrapper.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/consumer/action/CircuitBreakTypeWrapper.java
@@ -19,7 +19,7 @@
 package org.apache.dubbo.samples.resilience4jboot2.consumer.action;
 
 import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.samples.resilience4jboot2.api.CircuitBreakerService;
 import org.springframework.stereotype.Component;
 
@@ -29,7 +29,7 @@
 @Component("circuitBreakTypeWrapper")
 @CircuitBreaker(name = "backendA")
 public class CircuitBreakTypeWrapper {
-    @Reference(interfaceClass = CircuitBreakerService.class)
+    @DubboReference(interfaceClass = CircuitBreakerService.class)
     private CircuitBreakerService circuitBreakerService;
 
     public String say(String name) {
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/consumer/action/RateLimiterAction.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/consumer/action/RateLimiterAction.java
index 2b044c6..d96d09e 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/consumer/action/RateLimiterAction.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/consumer/action/RateLimiterAction.java
@@ -19,7 +19,7 @@
 
 package org.apache.dubbo.samples.resilience4jboot2.consumer.action;
 
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.samples.resilience4jboot2.api.RateLimiterService;
 import org.springframework.stereotype.Component;
 
@@ -29,7 +29,7 @@
 @Component("rateLimiterAction")
 public class RateLimiterAction {
 
-    @Reference(interfaceClass = RateLimiterService.class)
+    @DubboReference(interfaceClass = RateLimiterService.class)
     private RateLimiterService rateLimiterService;
 
     private Thread rateThread = new Thread(new Runnable() {
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/provider/impl/AnnotationServiceImpl.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/provider/impl/AnnotationServiceImpl.java
index ee8175c..61c8556 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/provider/impl/AnnotationServiceImpl.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/provider/impl/AnnotationServiceImpl.java
@@ -19,13 +19,13 @@
 
 package org.apache.dubbo.samples.resilience4jboot2.provider.impl;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.samples.resilience4jboot2.api.AnnotationService;
 
 /**
  * AsyncServiceImpl
  */
-@Service(interfaceClass = AnnotationService.class)
+@DubboService(interfaceClass = AnnotationService.class)
 public class AnnotationServiceImpl implements AnnotationService {
 
     //    @HystrixCommand(commandProperties = { @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/provider/impl/CircuitBreakerServiceImpl.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/provider/impl/CircuitBreakerServiceImpl.java
index 0b1a2b2..eff4c86 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/provider/impl/CircuitBreakerServiceImpl.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/provider/impl/CircuitBreakerServiceImpl.java
@@ -18,7 +18,7 @@
  */
 package org.apache.dubbo.samples.resilience4jboot2.provider.impl;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.samples.resilience4jboot2.api.CircuitBreakerService;
 
 import java.util.concurrent.atomic.AtomicLong;
@@ -26,7 +26,7 @@
 /**
  * 2018/12/26
  */
-@Service(interfaceClass = CircuitBreakerService.class)
+@DubboService(interfaceClass = CircuitBreakerService.class)
 public class CircuitBreakerServiceImpl implements CircuitBreakerService {
     private AtomicLong count = new AtomicLong(0);
 
diff --git a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/provider/impl/RateLimiterServiceImpl.java b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/provider/impl/RateLimiterServiceImpl.java
index 9b74247..38d955b 100644
--- a/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/provider/impl/RateLimiterServiceImpl.java
+++ b/dubbo-samples-resilience4j/dubbo-samples-resilience4j-springboot2/src/main/java/org/apache/dubbo/samples/resilience4jboot2/provider/impl/RateLimiterServiceImpl.java
@@ -19,13 +19,13 @@
 package org.apache.dubbo.samples.resilience4jboot2.provider.impl;
 
 import io.github.resilience4j.ratelimiter.annotation.RateLimiter;
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.samples.resilience4jboot2.api.RateLimiterService;
 
 /**
  * 2018/12/26
  */
-@Service(interfaceClass = RateLimiterService.class)
+@DubboService(interfaceClass = RateLimiterService.class)
 public class RateLimiterServiceImpl implements RateLimiterService {
     @Override
     @RateLimiter(name = "limiterA")
diff --git a/dubbo-samples-rest/src/main/java/org/apache/dubbo/integration/swagger/DubboSwaggerApiListingResource.java b/dubbo-samples-rest/src/main/java/org/apache/dubbo/integration/swagger/DubboSwaggerApiListingResource.java
index a92c30e..27c1f62 100644
--- a/dubbo-samples-rest/src/main/java/org/apache/dubbo/integration/swagger/DubboSwaggerApiListingResource.java
+++ b/dubbo-samples-rest/src/main/java/org/apache/dubbo/integration/swagger/DubboSwaggerApiListingResource.java
@@ -18,9 +18,9 @@
  */
 package org.apache.dubbo.integration.swagger;
 
-import org.apache.dubbo.config.annotation.Service;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import io.swagger.jaxrs.listing.BaseApiListingResource;
+import org.apache.dubbo.config.annotation.DubboService;
 
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletContext;
@@ -30,7 +30,7 @@
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriInfo;
 
-@Service
+@DubboService
 public class DubboSwaggerApiListingResource extends BaseApiListingResource implements DubboSwaggerService {
 
     @Context
diff --git a/dubbo-samples-rest/src/main/java/org/apache/dubbo/samples/rest/impl/facade/AnnotationDrivenUserRestServiceImpl.java b/dubbo-samples-rest/src/main/java/org/apache/dubbo/samples/rest/impl/facade/AnnotationDrivenUserRestServiceImpl.java
index 3ff404e..ea17bd6 100644
--- a/dubbo-samples-rest/src/main/java/org/apache/dubbo/samples/rest/impl/facade/AnnotationDrivenUserRestServiceImpl.java
+++ b/dubbo-samples-rest/src/main/java/org/apache/dubbo/samples/rest/impl/facade/AnnotationDrivenUserRestServiceImpl.java
@@ -18,12 +18,12 @@
  */
 package org.apache.dubbo.samples.rest.impl.facade;
 
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.samples.rest.api.User;
 import org.apache.dubbo.samples.rest.api.UserService;
 import org.apache.dubbo.samples.rest.api.facade.RegistrationResult;
 import org.apache.dubbo.samples.rest.api.facade.UserRestService;
 
-import org.apache.dubbo.config.annotation.Service;
 import org.apache.dubbo.rpc.protocol.rest.support.ContentType;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -35,7 +35,7 @@
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 
-@Service(protocol = {"rest", "dubbo"}, group = "annotationConfig", validation = "true")
+@DubboService(protocol = {"rest", "dubbo"}, group = "annotationConfig", validation = "true")
 @Path("customers")
 @Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})
 @Produces({ContentType.APPLICATION_JSON_UTF_8, ContentType.TEXT_XML_UTF_8})
diff --git a/dubbo-samples-sentinel/src/main/java/org/apache/samples/sentinel/consumer/FooServiceConsumer.java b/dubbo-samples-sentinel/src/main/java/org/apache/samples/sentinel/consumer/FooServiceConsumer.java
index e204383..a0ddcba 100644
--- a/dubbo-samples-sentinel/src/main/java/org/apache/samples/sentinel/consumer/FooServiceConsumer.java
+++ b/dubbo-samples-sentinel/src/main/java/org/apache/samples/sentinel/consumer/FooServiceConsumer.java
@@ -17,13 +17,12 @@
 
 package org.apache.samples.sentinel.consumer;
 
-import org.apache.dubbo.config.annotation.Reference;
-
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.samples.sentinel.FooService;
 
 public class FooServiceConsumer {
 
-    @Reference(timeout = 3000)
+    @DubboReference(timeout = 3000)
     private FooService fooService;
 
     public String sayHello(String name) {
diff --git a/dubbo-samples-sentinel/src/main/java/org/apache/samples/sentinel/provider/FooServiceImpl.java b/dubbo-samples-sentinel/src/main/java/org/apache/samples/sentinel/provider/FooServiceImpl.java
index 32bbdef..020649e 100644
--- a/dubbo-samples-sentinel/src/main/java/org/apache/samples/sentinel/provider/FooServiceImpl.java
+++ b/dubbo-samples-sentinel/src/main/java/org/apache/samples/sentinel/provider/FooServiceImpl.java
@@ -17,13 +17,12 @@
 
 package org.apache.samples.sentinel.provider;
 
-import org.apache.dubbo.config.annotation.Service;
-
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.samples.sentinel.FooService;
 
 import java.time.LocalDateTime;
 
-@Service(timeout = 3000)
+@DubboService(timeout = 3000)
 public class FooServiceImpl implements FooService {
 
     @Override
diff --git a/dubbo-samples-simplified-registry/dubbo-samples-simplified-registry-annotation/src/main/java/org/apache/dubbo/samples/simplified/annotation/action/AnnotationAction.java b/dubbo-samples-simplified-registry/dubbo-samples-simplified-registry-annotation/src/main/java/org/apache/dubbo/samples/simplified/annotation/action/AnnotationAction.java
index f074409..8847f3f 100644
--- a/dubbo-samples-simplified-registry/dubbo-samples-simplified-registry-annotation/src/main/java/org/apache/dubbo/samples/simplified/annotation/action/AnnotationAction.java
+++ b/dubbo-samples-simplified-registry/dubbo-samples-simplified-registry-annotation/src/main/java/org/apache/dubbo/samples/simplified/annotation/action/AnnotationAction.java
@@ -19,15 +19,14 @@
 
 package org.apache.dubbo.samples.simplified.annotation.action;
 
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.samples.simplified.annotation.api.AnnotationService;
-
 import org.springframework.stereotype.Component;
 
 @Component("annotationAction")
 public class AnnotationAction {
 
-    @Reference(version = "1.1.8", group = "d-test", owner = "vvvanno", retries = 4, actives = 6, timeout = 4500, init = true)
+    @DubboReference(version = "1.1.8", group = "d-test", owner = "vvvanno", retries = 4, actives = 6, timeout = 4500, init = true)
     private AnnotationService annotationService;
 
     public String doSayHello(String name) {
diff --git a/dubbo-samples-simplified-registry/dubbo-samples-simplified-registry-annotation/src/main/java/org/apache/dubbo/samples/simplified/annotation/impl/AnnotationServiceImpl.java b/dubbo-samples-simplified-registry/dubbo-samples-simplified-registry-annotation/src/main/java/org/apache/dubbo/samples/simplified/annotation/impl/AnnotationServiceImpl.java
index 39ecf1c..7bf15cb 100644
--- a/dubbo-samples-simplified-registry/dubbo-samples-simplified-registry-annotation/src/main/java/org/apache/dubbo/samples/simplified/annotation/impl/AnnotationServiceImpl.java
+++ b/dubbo-samples-simplified-registry/dubbo-samples-simplified-registry-annotation/src/main/java/org/apache/dubbo/samples/simplified/annotation/impl/AnnotationServiceImpl.java
@@ -19,10 +19,10 @@
 
 package org.apache.dubbo.samples.simplified.annotation.impl;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.samples.simplified.annotation.api.AnnotationService;
 
-@Service(version = "1.1.8", group = "d-test", executes = 4500, retries = 7, owner = "victanno", timeout = 5300)
+@DubboService(version = "1.1.8", group = "d-test", executes = 4500, retries = 7, owner = "victanno", timeout = 5300)
 public class AnnotationServiceImpl implements AnnotationService {
 
     @Override
diff --git a/dubbo-samples-spring-boot-hystrix/src/main/java/org/apache/dubbo/spring/boot/consumer/ConsumerApplication.java b/dubbo-samples-spring-boot-hystrix/src/main/java/org/apache/dubbo/spring/boot/consumer/ConsumerApplication.java
index d667224..b6c4028 100644
--- a/dubbo-samples-spring-boot-hystrix/src/main/java/org/apache/dubbo/spring/boot/consumer/ConsumerApplication.java
+++ b/dubbo-samples-spring-boot-hystrix/src/main/java/org/apache/dubbo/spring/boot/consumer/ConsumerApplication.java
@@ -16,23 +16,21 @@
  */
 package org.apache.dubbo.spring.boot.consumer;
 
+import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.spring.boot.api.HelloService;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.netflix.hystrix.EnableHystrix;
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.stereotype.Service;
 
-import org.apache.dubbo.config.annotation.Reference;
-import org.apache.dubbo.spring.boot.api.HelloService;
-
-import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
-
 @SpringBootApplication
 @Service
 @EnableHystrix
 public class ConsumerApplication {
 
-    @Reference(version = "1.0.0")
+    @DubboReference(version = "1.0.0")
     private HelloService demoService;
 
     public static void main(String[] args) {
diff --git a/dubbo-samples-spring-boot-hystrix/src/main/java/org/apache/dubbo/spring/boot/provider/impl/HelloServiceImpl.java b/dubbo-samples-spring-boot-hystrix/src/main/java/org/apache/dubbo/spring/boot/provider/impl/HelloServiceImpl.java
index fcf3182..b22a186 100644
--- a/dubbo-samples-spring-boot-hystrix/src/main/java/org/apache/dubbo/spring/boot/provider/impl/HelloServiceImpl.java
+++ b/dubbo-samples-spring-boot-hystrix/src/main/java/org/apache/dubbo/spring/boot/provider/impl/HelloServiceImpl.java
@@ -17,13 +17,12 @@
 
 package org.apache.dubbo.spring.boot.provider.impl;
 
-import org.apache.dubbo.config.annotation.Service;
-import org.apache.dubbo.spring.boot.api.HelloService;
-
 import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
 import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.apache.dubbo.spring.boot.api.HelloService;
 
-@Service(version = "1.0.0")
+@DubboService(version = "1.0.0")
 public class HelloServiceImpl implements HelloService {
 
     @HystrixCommand(commandProperties = {
diff --git a/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/action/AnnotationAction.java b/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/action/AnnotationAction.java
index 83ce1d2..7118920 100644
--- a/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/action/AnnotationAction.java
+++ b/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/action/AnnotationAction.java
@@ -19,16 +19,15 @@
 
 package org.apache.dubbo.samples.annotation.action;
 
-import org.apache.dubbo.config.annotation.Reference;
-import org.apache.dubbo.samples.annotation.api.AnnotationService;
-
 import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.samples.annotation.api.AnnotationService;
 import org.springframework.stereotype.Component;
 
 @Component("annotationAction")
 public class AnnotationAction {
 
-    @Reference(version = "1.0.0")
+    @DubboReference(version = "1.0.0")
     private AnnotationService annotationService;
 
     @HystrixCommand(fallbackMethod = "reliable")
diff --git a/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationServiceImpl.java b/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationServiceImpl.java
index e0c738c..ee5bdf5 100644
--- a/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationServiceImpl.java
+++ b/dubbo-samples-spring-hystrix/src/main/java/org/apache/dubbo/samples/annotation/impl/AnnotationServiceImpl.java
@@ -19,13 +19,12 @@
 
 package org.apache.dubbo.samples.annotation.impl;
 
-import org.apache.dubbo.config.annotation.Service;
-import org.apache.dubbo.samples.annotation.api.AnnotationService;
-
 import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
 import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
+import org.apache.dubbo.config.annotation.DubboService;
+import org.apache.dubbo.samples.annotation.api.AnnotationService;
 
-@Service(version = "1.0.0")
+@DubboService(version = "1.0.0")
 public class AnnotationServiceImpl implements AnnotationService {
 
     @HystrixCommand(commandProperties = {@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "10"),
diff --git a/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/action/GreetingServiceConsumer.java b/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/action/GreetingServiceConsumer.java
index 0b4f3d5..d7ce9dd 100644
--- a/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/action/GreetingServiceConsumer.java
+++ b/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/action/GreetingServiceConsumer.java
@@ -19,15 +19,14 @@
 
 package org.apache.dubbo.samples.action;
 
-import org.apache.dubbo.config.annotation.Reference;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.samples.api.GreetingService;
-
 import org.springframework.stereotype.Component;
 
 @Component("annotatedConsumer")
 public class GreetingServiceConsumer {
 
-    @Reference(version = "1.0.0")
+    @DubboReference(version = "1.0.0")
     private GreetingService greetingService;
 
     public String doSayHello(String name) {
diff --git a/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/impl/AnnotatedGreetingService.java b/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/impl/AnnotatedGreetingService.java
index 6cd92ee..ae18b1d 100644
--- a/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/impl/AnnotatedGreetingService.java
+++ b/dubbo-samples-zookeeper/src/main/java/org/apache/dubbo/samples/impl/AnnotatedGreetingService.java
@@ -19,10 +19,10 @@
 
 package org.apache.dubbo.samples.impl;
 
-import org.apache.dubbo.config.annotation.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.samples.api.GreetingService;
 
-@Service(version = "1.0.0")
+@DubboService(version = "1.0.0")
 public class AnnotatedGreetingService implements GreetingService {
 
     public String sayHello(String name) {
