You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shenyu.apache.org by zh...@apache.org on 2023/01/17 08:39:34 UTC
[shenyu] branch master updated: [type:refactor] refactor apidoc_dubbo get dubbo version (#4320)
This is an automated email from the ASF dual-hosted git repository.
zhangzicheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new 60773344d [type:refactor] refactor apidoc_dubbo get dubbo version (#4320)
60773344d is described below
commit 60773344d26ffa472c2437ee0e09116dca2f6157
Author: zhengpeng <84...@qq.com>
AuthorDate: Tue Jan 17 16:39:23 2023 +0800
[type:refactor] refactor apidoc_dubbo get dubbo version (#4320)
* #4029 api-doc get dubbo version
* Empty Commit to setup deployments
* Empty Commit to setup deployments
Co-authored-by: xiaoyu <xi...@apache.org>
---
.../client/brpc/BrpcContextRefreshedEventListener.java | 2 +-
.../client/AbstractContextRefreshedEventListener.java | 16 +++++++++-------
.../alibaba/dubbo/AlibabaDubboServiceBeanListener.java | 15 +++++++++++----
.../apache/dubbo/ApacheDubboServiceBeanListener.java | 15 +++++++++++----
.../shenyu/client/grpc/GrpcClientEventListener.java | 2 +-
.../springcloud/init/SpringCloudClientEventListener.java | 2 +-
.../springmvc/init/SpringMvcClientEventListener.java | 2 +-
.../shenyu/client/motan/MotanServiceEventListener.java | 2 +-
.../shenyu/client/sofa/SofaServiceEventListener.java | 3 ++-
.../shenyu/client/tars/TarsServiceBeanEventListener.java | 2 +-
.../init/SpringWebSocketClientEventListener.java | 2 +-
.../src/main/resources/spring-dubbo.xml | 8 ++++----
.../src/main/resources/spring-dubbo.xml | 4 ++--
13 files changed, 46 insertions(+), 29 deletions(-)
diff --git a/shenyu-client/shenyu-client-brpc/src/main/java/org/apache/shenyu/client/brpc/BrpcContextRefreshedEventListener.java b/shenyu-client/shenyu-client-brpc/src/main/java/org/apache/shenyu/client/brpc/BrpcContextRefreshedEventListener.java
index 59f8ed7e7..6ab8eaf45 100644
--- a/shenyu-client/shenyu-client-brpc/src/main/java/org/apache/shenyu/client/brpc/BrpcContextRefreshedEventListener.java
+++ b/shenyu-client/shenyu-client-brpc/src/main/java/org/apache/shenyu/client/brpc/BrpcContextRefreshedEventListener.java
@@ -70,7 +70,7 @@ public class BrpcContextRefreshedEventListener extends AbstractContextRefreshedE
}
@Override
- protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation) {
+ protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation, final Map<String, Object> beans) {
ShenyuBrpcClient shenyuBrpcClient = AnnotatedElementUtils.findMergedAnnotation(method, ShenyuBrpcClient.class);
if (Objects.isNull(shenyuBrpcClient)) {
return null;
diff --git a/shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/client/AbstractContextRefreshedEventListener.java b/shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/client/AbstractContextRefreshedEventListener.java
index 084e714d4..54f96cd18 100644
--- a/shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/client/AbstractContextRefreshedEventListener.java
+++ b/shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/client/AbstractContextRefreshedEventListener.java
@@ -107,7 +107,7 @@ public abstract class AbstractContextRefreshedEventListener<T, A extends Annotat
this.port = props.getProperty(ShenyuClientConstants.PORT);
publisher.start(shenyuClientRegisterRepository);
}
-
+
@Override
public void onApplicationEvent(@NonNull final ContextRefreshedEvent event) {
final ApplicationContext context = event.getApplicationContext();
@@ -121,15 +121,17 @@ public abstract class AbstractContextRefreshedEventListener<T, A extends Annotat
publisher.publishEvent(buildURIRegisterDTO(context, beans));
beans.forEach(this::handle);
Map<String, Object> apiModules = context.getBeansWithAnnotation(ApiModule.class);
- apiModules.forEach(this::handleApiDoc);
+ apiModules.forEach((k, v) -> {
+ handleApiDoc(v, beans);
+ });
}
- private void handleApiDoc(final String name, final Object bean) {
+ private void handleApiDoc(final Object bean, final Map<String, T> beans) {
Class<?> apiModuleClass = AopUtils.isAopProxy(bean) ? AopUtils.getTargetClass(bean) : bean.getClass();
final Method[] methods = ReflectionUtils.getUniqueDeclaredMethods(apiModuleClass);
for (Method method : methods) {
if (method.isAnnotationPresent(ApiDoc.class)) {
- List<ApiDocRegisterDTO> apis = buildApiDocDTO(bean, method);
+ List<ApiDocRegisterDTO> apis = buildApiDocDTO(bean, method, beans);
for (ApiDocRegisterDTO apiDocRegisterDTO : apis) {
publisher.publishEvent(apiDocRegisterDTO);
}
@@ -137,7 +139,7 @@ public abstract class AbstractContextRefreshedEventListener<T, A extends Annotat
}
}
- private List<ApiDocRegisterDTO> buildApiDocDTO(final Object bean, final Method method) {
+ private List<ApiDocRegisterDTO> buildApiDocDTO(final Object bean, final Method method, final Map<String, T> beans) {
String apiDesc = Stream.of(method.getDeclaredAnnotations()).filter(item -> item instanceof ApiDoc).findAny().map(item -> {
ApiDoc apiDoc = (ApiDoc) item;
return apiDoc.desc();
@@ -151,7 +153,7 @@ public abstract class AbstractContextRefreshedEventListener<T, A extends Annotat
if (Objects.isNull(annotation)) {
return Lists.newArrayList();
}
- Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> sextet = buildApiDocSextet(method, annotation);
+ Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> sextet = buildApiDocSextet(method, annotation, beans);
if (Objects.isNull(sextet)) {
return Lists.newArrayList();
}
@@ -184,7 +186,7 @@ public abstract class AbstractContextRefreshedEventListener<T, A extends Annotat
return list;
}
- protected abstract Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(Method method, Annotation annotation);
+ protected abstract Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(Method method, Annotation annotation, Map<String, T> beans);
protected abstract Map<String, T> getBeans(ApplicationContext context);
diff --git a/shenyu-client/shenyu-client-dubbo/shenyu-client-alibaba-dubbo/src/main/java/org/apache/shenyu/client/alibaba/dubbo/AlibabaDubboServiceBeanListener.java b/shenyu-client/shenyu-client-dubbo/shenyu-client-alibaba-dubbo/src/main/java/org/apache/shenyu/client/alibaba/dubbo/AlibabaDubboServiceBeanListener.java
index aaba87d37..75a0a111c 100644
--- a/shenyu-client/shenyu-client-dubbo/shenyu-client-alibaba-dubbo/src/main/java/org/apache/shenyu/client/alibaba/dubbo/AlibabaDubboServiceBeanListener.java
+++ b/shenyu-client/shenyu-client-dubbo/shenyu-client-alibaba-dubbo/src/main/java/org/apache/shenyu/client/alibaba/dubbo/AlibabaDubboServiceBeanListener.java
@@ -66,7 +66,7 @@ public class AlibabaDubboServiceBeanListener extends AbstractContextRefreshedEve
}
@Override
- protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation) {
+ protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation, final Map<String, ServiceBean> beans) {
ShenyuDubboClient shenyuDubboClient = AnnotatedElementUtils.findMergedAnnotation(method, ShenyuDubboClient.class);
if (Objects.isNull(shenyuDubboClient)) {
return null;
@@ -75,9 +75,16 @@ public class AlibabaDubboServiceBeanListener extends AbstractContextRefreshedEve
String consume = ShenyuClientConstants.MEDIA_TYPE_ALL_VALUE;
String[] values = new String[]{shenyuDubboClient.value()};
ApiHttpMethodEnum[] apiHttpMethodEnums = new ApiHttpMethodEnum[]{ApiHttpMethodEnum.NOT_HTTP};
- //TODO get dubbo version
- String version = "v0.01";
- return Sextet.with(values, consume, produce, apiHttpMethodEnums, RpcTypeEnum.DUBBO, version);
+ String defaultVersion = "v0.01";
+ Class methodClass = method.getDeclaringClass();
+ Class[] interfaces = methodClass.getInterfaces();
+ for (Class anInterface : interfaces) {
+ if (beans.containsKey(anInterface.getName())) {
+ ServiceBean serviceBean = beans.get(anInterface.getName());
+ defaultVersion = Optional.ofNullable(serviceBean.getVersion()).orElse(defaultVersion);
+ }
+ }
+ return Sextet.with(values, consume, produce, apiHttpMethodEnums, RpcTypeEnum.DUBBO, defaultVersion);
}
@Override
diff --git a/shenyu-client/shenyu-client-dubbo/shenyu-client-apache-dubbo/src/main/java/org/apache/shenyu/client/apache/dubbo/ApacheDubboServiceBeanListener.java b/shenyu-client/shenyu-client-dubbo/shenyu-client-apache-dubbo/src/main/java/org/apache/shenyu/client/apache/dubbo/ApacheDubboServiceBeanListener.java
index f0d7ba4cd..01911b637 100644
--- a/shenyu-client/shenyu-client-dubbo/shenyu-client-apache-dubbo/src/main/java/org/apache/shenyu/client/apache/dubbo/ApacheDubboServiceBeanListener.java
+++ b/shenyu-client/shenyu-client-dubbo/shenyu-client-apache-dubbo/src/main/java/org/apache/shenyu/client/apache/dubbo/ApacheDubboServiceBeanListener.java
@@ -69,7 +69,7 @@ public class ApacheDubboServiceBeanListener extends AbstractContextRefreshedEven
}
@Override
- protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation) {
+ protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation, final Map<String, ServiceBean> beans) {
ShenyuDubboClient shenyuDubboClient = AnnotatedElementUtils.findMergedAnnotation(method, ShenyuDubboClient.class);
if (Objects.isNull(shenyuDubboClient)) {
return null;
@@ -78,9 +78,16 @@ public class ApacheDubboServiceBeanListener extends AbstractContextRefreshedEven
String consume = ShenyuClientConstants.MEDIA_TYPE_ALL_VALUE;
String[] values = new String[]{shenyuDubboClient.value()};
ApiHttpMethodEnum[] apiHttpMethodEnums = new ApiHttpMethodEnum[]{ApiHttpMethodEnum.NOT_HTTP};
- //TODO get dubbo version
- String version = "v0.01";
- return Sextet.with(values, consume, produce, apiHttpMethodEnums, RpcTypeEnum.DUBBO, version);
+ String defaultVersion = "v0.01";
+ Class methodClass = method.getDeclaringClass();
+ Class[] interfaces = methodClass.getInterfaces();
+ for (Class anInterface : interfaces) {
+ if (beans.containsKey(anInterface.getName())) {
+ ServiceBean serviceBean = beans.get(anInterface.getName());
+ defaultVersion = Optional.ofNullable(serviceBean.getVersion()).orElse(defaultVersion);
+ }
+ }
+ return Sextet.with(values, consume, produce, apiHttpMethodEnums, RpcTypeEnum.DUBBO, defaultVersion);
}
@Override
diff --git a/shenyu-client/shenyu-client-grpc/src/main/java/org/apache/shenyu/client/grpc/GrpcClientEventListener.java b/shenyu-client/shenyu-client-grpc/src/main/java/org/apache/shenyu/client/grpc/GrpcClientEventListener.java
index 89ad7a42f..2313a7fb6 100644
--- a/shenyu-client/shenyu-client-grpc/src/main/java/org/apache/shenyu/client/grpc/GrpcClientEventListener.java
+++ b/shenyu-client/shenyu-client-grpc/src/main/java/org/apache/shenyu/client/grpc/GrpcClientEventListener.java
@@ -73,7 +73,7 @@ public class GrpcClientEventListener extends AbstractContextRefreshedEventListen
}
@Override
- protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation) {
+ protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation, final Map<String, BindableService> beans) {
ShenyuGrpcClient shenyuGrpcClient = AnnotatedElementUtils.findMergedAnnotation(method, ShenyuGrpcClient.class);
if (Objects.isNull(shenyuGrpcClient)) {
return null;
diff --git a/shenyu-client/shenyu-client-http/shenyu-client-springcloud/src/main/java/org/apache/shenyu/client/springcloud/init/SpringCloudClientEventListener.java b/shenyu-client/shenyu-client-http/shenyu-client-springcloud/src/main/java/org/apache/shenyu/client/springcloud/init/SpringCloudClientEventListener.java
index c31592252..3742e4048 100644
--- a/shenyu-client/shenyu-client-http/shenyu-client-springcloud/src/main/java/org/apache/shenyu/client/springcloud/init/SpringCloudClientEventListener.java
+++ b/shenyu-client/shenyu-client-http/shenyu-client-springcloud/src/main/java/org/apache/shenyu/client/springcloud/init/SpringCloudClientEventListener.java
@@ -101,7 +101,7 @@ public class SpringCloudClientEventListener extends AbstractContextRefreshedEven
}
@Override
- protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation) {
+ protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation, final Map<String, Object> beans) {
RequestMapping requestMapping = AnnotatedElementUtils.findMergedAnnotation(method, RequestMapping.class);
String produce = requestMapping.produces().length == 0 ? ShenyuClientConstants.MEDIA_TYPE_ALL_VALUE : String.join(",", requestMapping.produces());
String consume = requestMapping.consumes().length == 0 ? ShenyuClientConstants.MEDIA_TYPE_ALL_VALUE : String.join(",", requestMapping.consumes());
diff --git a/shenyu-client/shenyu-client-http/shenyu-client-springmvc/src/main/java/org/apache/shenyu/client/springmvc/init/SpringMvcClientEventListener.java b/shenyu-client/shenyu-client-http/shenyu-client-springmvc/src/main/java/org/apache/shenyu/client/springmvc/init/SpringMvcClientEventListener.java
index 71f67857b..26af119f6 100644
--- a/shenyu-client/shenyu-client-http/shenyu-client-springmvc/src/main/java/org/apache/shenyu/client/springmvc/init/SpringMvcClientEventListener.java
+++ b/shenyu-client/shenyu-client-http/shenyu-client-springmvc/src/main/java/org/apache/shenyu/client/springmvc/init/SpringMvcClientEventListener.java
@@ -90,7 +90,7 @@ public class SpringMvcClientEventListener extends AbstractContextRefreshedEventL
}
@Override
- protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation) {
+ protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation, final Map<String, Object> beans) {
RequestMapping requestMapping = AnnotatedElementUtils.findMergedAnnotation(method, RequestMapping.class);
String produce = requestMapping.produces().length == 0 ? ShenyuClientConstants.MEDIA_TYPE_ALL_VALUE : String.join(",", requestMapping.produces());
String consume = requestMapping.consumes().length == 0 ? ShenyuClientConstants.MEDIA_TYPE_ALL_VALUE : String.join(",", requestMapping.consumes());
diff --git a/shenyu-client/shenyu-client-motan/src/main/java/org/apache/shenyu/client/motan/MotanServiceEventListener.java b/shenyu-client/shenyu-client-motan/src/main/java/org/apache/shenyu/client/motan/MotanServiceEventListener.java
index 365809ade..f4eee1e41 100644
--- a/shenyu-client/shenyu-client-motan/src/main/java/org/apache/shenyu/client/motan/MotanServiceEventListener.java
+++ b/shenyu-client/shenyu-client-motan/src/main/java/org/apache/shenyu/client/motan/MotanServiceEventListener.java
@@ -72,7 +72,7 @@ public class MotanServiceEventListener extends AbstractContextRefreshedEventList
}
@Override
- protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation) {
+ protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation, final Map<String, Object> beans) {
ShenyuMotanClient shenyuMotanClient = AnnotatedElementUtils.findMergedAnnotation(method, ShenyuMotanClient.class);
if (Objects.isNull(shenyuMotanClient)) {
return null;
diff --git a/shenyu-client/shenyu-client-sofa/src/main/java/org/apache/shenyu/client/sofa/SofaServiceEventListener.java b/shenyu-client/shenyu-client-sofa/src/main/java/org/apache/shenyu/client/sofa/SofaServiceEventListener.java
index ee2fcf2ae..98ad617c1 100644
--- a/shenyu-client/shenyu-client-sofa/src/main/java/org/apache/shenyu/client/sofa/SofaServiceEventListener.java
+++ b/shenyu-client/shenyu-client-sofa/src/main/java/org/apache/shenyu/client/sofa/SofaServiceEventListener.java
@@ -156,7 +156,8 @@ public class SofaServiceEventListener extends AbstractContextRefreshedEventListe
}
@Override
- protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation) {
+ protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation,
+ final Map<String, ServiceFactoryBean> beans) {
ShenyuSofaClient shenyuSofaClient = AnnotatedElementUtils.findMergedAnnotation(method, ShenyuSofaClient.class);
if (Objects.isNull(shenyuSofaClient)) {
return null;
diff --git a/shenyu-client/shenyu-client-tars/src/main/java/org/apache/shenyu/client/tars/TarsServiceBeanEventListener.java b/shenyu-client/shenyu-client-tars/src/main/java/org/apache/shenyu/client/tars/TarsServiceBeanEventListener.java
index 00382a4ac..2393a6df8 100644
--- a/shenyu-client/shenyu-client-tars/src/main/java/org/apache/shenyu/client/tars/TarsServiceBeanEventListener.java
+++ b/shenyu-client/shenyu-client-tars/src/main/java/org/apache/shenyu/client/tars/TarsServiceBeanEventListener.java
@@ -80,7 +80,7 @@ public class TarsServiceBeanEventListener extends AbstractContextRefreshedEventL
}
@Override
- protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation) {
+ protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation, final Map<String, Object> beans) {
ShenyuTarsClient shenyuTarsClient = AnnotatedElementUtils.findMergedAnnotation(method, ShenyuTarsClient.class);
if (Objects.isNull(shenyuTarsClient)) {
return null;
diff --git a/shenyu-client/shenyu-client-websocket/shenyu-client-spring-websocket/src/main/java/org/apache/shenyu/client/spring/websocket/init/SpringWebSocketClientEventListener.java b/shenyu-client/shenyu-client-websocket/shenyu-client-spring-websocket/src/main/java/org/apache/shenyu/client/spring/websocket/init/SpringWebSocketClientEventListener.java
index 60d38c2f5..2581906d3 100644
--- a/shenyu-client/shenyu-client-websocket/shenyu-client-spring-websocket/src/main/java/org/apache/shenyu/client/spring/websocket/init/SpringWebSocketClientEventListener.java
+++ b/shenyu-client/shenyu-client-websocket/shenyu-client-spring-websocket/src/main/java/org/apache/shenyu/client/spring/websocket/init/SpringWebSocketClientEventListener.java
@@ -84,7 +84,7 @@ public class SpringWebSocketClientEventListener extends AbstractContextRefreshed
}
@Override
- protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation) {
+ protected Sextet<String[], String, String, ApiHttpMethodEnum[], RpcTypeEnum, String> buildApiDocSextet(final Method method, final Annotation annotation, final Map<String, Object> beans) {
ShenyuSpringWebSocketClient shenyuSpringWebSocketClient = AnnotatedElementUtils.findMergedAnnotation(method, ShenyuSpringWebSocketClient.class);
if (Objects.isNull(shenyuSpringWebSocketClient)) {
return null;
diff --git a/shenyu-examples/shenyu-examples-dubbo/shenyu-examples-alibaba-dubbo-service/src/main/resources/spring-dubbo.xml b/shenyu-examples/shenyu-examples-dubbo/shenyu-examples-alibaba-dubbo-service/src/main/resources/spring-dubbo.xml
index 426684189..b97c6bb8f 100644
--- a/shenyu-examples/shenyu-examples-dubbo/shenyu-examples-alibaba-dubbo-service/src/main/resources/spring-dubbo.xml
+++ b/shenyu-examples/shenyu-examples-dubbo/shenyu-examples-alibaba-dubbo-service/src/main/resources/spring-dubbo.xml
@@ -30,11 +30,11 @@
<dubbo:protocol name="dubbo" port="20888"/>
- <dubbo:service timeout="10000" interface="org.apache.shenyu.examples.dubbo.api.service.DubboTestService" ref="dubboTestService"/>
+ <dubbo:service timeout="10000" interface="org.apache.shenyu.examples.dubbo.api.service.DubboTestService" ref="dubboTestService" version="v0.0.1"/>
- <dubbo:service timeout="10000" interface="org.apache.shenyu.examples.dubbo.api.service.DubboMultiParamService" ref="dubboMultiParamService"/>
+ <dubbo:service timeout="10000" interface="org.apache.shenyu.examples.dubbo.api.service.DubboMultiParamService" ref="dubboMultiParamService" version="v0.0.1"/>
- <dubbo:service timeout="10000" interface="org.apache.shenyu.examples.dubbo.api.service.DubboClassTestService" ref="dubboClassTestService"/>
+ <dubbo:service timeout="10000" interface="org.apache.shenyu.examples.dubbo.api.service.DubboClassTestService" ref="dubboClassTestService" version="v0.0.1"/>
- <dubbo:service timeout="10000" interface="org.apache.shenyu.examples.dubbo.api.service.DubboClassMultiParamService" ref="dubboClassMultiParamService"/>
+ <dubbo:service timeout="10000" interface="org.apache.shenyu.examples.dubbo.api.service.DubboClassMultiParamService" ref="dubboClassMultiParamService" version="v0.0.1"/>
</beans>
diff --git a/shenyu-examples/shenyu-examples-dubbo/shenyu-examples-apache-dubbo-service/src/main/resources/spring-dubbo.xml b/shenyu-examples/shenyu-examples-dubbo/shenyu-examples-apache-dubbo-service/src/main/resources/spring-dubbo.xml
index 3c5db5f34..560e7d110 100644
--- a/shenyu-examples/shenyu-examples-dubbo/shenyu-examples-apache-dubbo-service/src/main/resources/spring-dubbo.xml
+++ b/shenyu-examples/shenyu-examples-dubbo/shenyu-examples-apache-dubbo-service/src/main/resources/spring-dubbo.xml
@@ -28,6 +28,6 @@
<dubbo:registry address="${dubbo.registry.address}"/>
<dubbo:protocol name="dubbo" port="20888"/>
- <dubbo:service timeout="10000" interface="org.apache.shenyu.examples.dubbo.api.service.DubboTestService" ref="dubboTestService"/>
- <dubbo:service timeout="10000" interface="org.apache.shenyu.examples.dubbo.api.service.DubboMultiParamService" ref="dubboMultiParamService"/>
+ <dubbo:service timeout="10000" interface="org.apache.shenyu.examples.dubbo.api.service.DubboTestService" ref="dubboTestService" version="v0.0.2"/>
+ <dubbo:service timeout="10000" interface="org.apache.shenyu.examples.dubbo.api.service.DubboMultiParamService" ref="dubboMultiParamService" version="v0.0.2"/>
</beans>