diff --git a/common/url.go b/common/url.go
index 5d850a5edea8dbe0fb43919dfbbbfb3c38406dcb..eca1d27992f7ea1e46f292d26544756842867de5 100644
--- a/common/url.go
+++ b/common/url.go
@@ -419,7 +419,7 @@ func (c URL) ToMap() map[string]string {
 //TODO configuration merge, in the future , the configuration center's config should merge too.
 func MergeUrl(serviceUrl URL, referenceUrl *URL) URL {
 	mergedUrl := serviceUrl
-	var methodConfigMergeFcn = []func(method string){}
+
 	//iterator the referenceUrl if serviceUrl not have the key ,merge in
 
 	for k, v := range referenceUrl.Params {
@@ -428,7 +428,7 @@ func MergeUrl(serviceUrl URL, referenceUrl *URL) URL {
 		}
 	}
 	//loadBalance,cluster,retries strategy config
-	mergeNormalParam(mergedUrl, referenceUrl, methodConfigMergeFcn, []string{constant.LOADBALANCE_KEY, constant.CLUSTER_KEY, constant.RETRIES_KEY})
+	methodConfigMergeFcn := mergeNormalParam(mergedUrl, referenceUrl, []string{constant.LOADBALANCE_KEY, constant.CLUSTER_KEY, constant.RETRIES_KEY})
 
 	//remote timestamp
 	if v := serviceUrl.Params.Get(constant.TIMESTAMP_KEY); len(v) > 0 {
@@ -446,7 +446,8 @@ func MergeUrl(serviceUrl URL, referenceUrl *URL) URL {
 	return mergedUrl
 }
 
-func mergeNormalParam(mergedUrl URL, referenceUrl *URL, methodConfigMergeFcn []func(method string), paramKeys []string) {
+func mergeNormalParam(mergedUrl URL, referenceUrl *URL, paramKeys []string) []func(method string) {
+	var methodConfigMergeFcn = []func(method string){}
 	for _, paramKey := range paramKeys {
 		if v := referenceUrl.Params.Get(paramKey); len(v) > 0 {
 			mergedUrl.Params.Set(paramKey, v)
@@ -457,5 +458,5 @@ func mergeNormalParam(mergedUrl URL, referenceUrl *URL, methodConfigMergeFcn []f
 			}
 		})
 	}
-
+	return methodConfigMergeFcn
 }
diff --git a/common/url_test.go b/common/url_test.go
index 6cd653fc929fbb3379c1d081a33ce5bc2d350089..9366b0c1cc39910bfec48efd052fd1fa31cf1750 100644
--- a/common/url_test.go
+++ b/common/url_test.go
@@ -222,11 +222,13 @@ func TestMergeUrl(t *testing.T) {
 	referenceUrlParams.Set(constant.CLUSTER_KEY, "random")
 	referenceUrlParams.Set(constant.RETRIES_KEY, "1")
 	referenceUrlParams.Set("test3", "1")
+	referenceUrlParams.Set("methods.testMethod."+constant.RETRIES_KEY, "1")
 	serviceUrlParams := url.Values{}
 	serviceUrlParams.Set("test2", "1")
 	serviceUrlParams.Set(constant.CLUSTER_KEY, "roundrobin")
 	serviceUrlParams.Set(constant.RETRIES_KEY, "2")
-	referenceUrl, _ := NewURL(context.TODO(), "mock1://127.0.0.1:1111", WithParams(referenceUrlParams))
+	serviceUrlParams.Set("methods.testMethod."+constant.RETRIES_KEY, "2")
+	referenceUrl, _ := NewURL(context.TODO(), "mock1://127.0.0.1:1111", WithParams(referenceUrlParams), WithMethods([]string{"testMethod"}))
 	serviceUrl, _ := NewURL(context.TODO(), "mock2://127.0.0.1:20000", WithParams(serviceUrlParams))
 
 	mergedUrl := MergeUrl(serviceUrl, &referenceUrl)
@@ -234,4 +236,5 @@ func TestMergeUrl(t *testing.T) {
 	assert.Equal(t, "1", mergedUrl.GetParam("test2", ""))
 	assert.Equal(t, "1", mergedUrl.GetParam("test3", ""))
 	assert.Equal(t, "1", mergedUrl.GetParam(constant.RETRIES_KEY, ""))
+	assert.Equal(t, "1", mergedUrl.GetParam("methods.testMethod."+constant.RETRIES_KEY, ""))
 }