diff --git a/config/support/config_loader.go b/config/support/config_loader.go
index 0f21f643531b5917b19a21535849b67456d3ae35..88f37f55e1855b9590a1aa21d6ecc6e91b539f76 100644
--- a/config/support/config_loader.go
+++ b/config/support/config_loader.go
@@ -219,8 +219,8 @@ func Load() (map[string]*ReferenceConfig, map[string]*ServiceConfig) {
 		length := len(consumerConfig.References)
 		for index := 0; index < length; index++ {
 			con := &consumerConfig.References[index]
-			con.Implement(conServices[con.InterfaceName])
 			con.Refer()
+			con.Implement(conServices[con.InterfaceName])
 			refMap[con.InterfaceName] = con
 		}
 	}
diff --git a/registry/protocol/protocol.go b/registry/protocol/protocol.go
index 48eb62fb13415ef7282d454cefb54fc94f87179a..80b0c63c248463e9d8634fd45a3b8eb91fffc4c9 100644
--- a/registry/protocol/protocol.go
+++ b/registry/protocol/protocol.go
@@ -1,7 +1,6 @@
 package protocol
 
 import (
-	"github.com/dubbo/dubbo-go/protocol/protocolwrapper"
 	"sync"
 )
 
@@ -14,6 +13,7 @@ import (
 	"github.com/dubbo/dubbo-go/common/extension"
 	"github.com/dubbo/dubbo-go/config"
 	"github.com/dubbo/dubbo-go/protocol"
+	"github.com/dubbo/dubbo-go/protocol/protocolwrapper"
 	"github.com/dubbo/dubbo-go/registry"
 	directory2 "github.com/dubbo/dubbo-go/registry/directory"
 )
@@ -46,10 +46,14 @@ func getRegistry(regUrl *config.URL) registry.Registry {
 	}
 	return reg
 }
-func (protocol *RegistryProtocol) Refer(url config.URL) protocol.Invoker {
+func (proto *RegistryProtocol) Refer(url config.URL) protocol.Invoker {
 	var regUrl = url
 	var serviceUrl = regUrl.SubURL
 
+	if regUrl.Protocol == constant.REGISTRY_PROTOCOL {
+		protocol := regUrl.GetParam(constant.REGISTRY_KEY, "")
+		regUrl.Protocol = protocol
+	}
 	reg := getRegistry(&regUrl)
 
 	//new registry directory for store service url from registry
@@ -96,7 +100,7 @@ func (*RegistryProtocol) getRegistryUrl(invoker protocol.Invoker) config.URL {
 	url := invoker.GetUrl()
 	//if the protocol == registry ,set protocol the registry value in url.params
 	if url.Protocol == constant.REGISTRY_PROTOCOL {
-		protocol := url.GetParam(constant.REGISTRY_KEY, constant.DEFAULT_PROTOCOL)
+		protocol := url.GetParam(constant.REGISTRY_KEY, "")
 		url.Protocol = protocol
 	}
 	return url