fix bad type check logic
diff --git a/config/config_loader.go b/config/config_loader.go
index f907051..448ce17 100644
--- a/config/config_loader.go
+++ b/config/config_loader.go
@@ -117,7 +117,7 @@
 		Address:    "127.0.0.1:2181",
 	}
 	switch target.(type) {
-	case ProviderConfig:
+	case *ProviderConfig:
 		p := target.(*ProviderConfig)
 		if len(p.Registries) == 0 {
 			p.Registries["demoZK"] = registryConfig
diff --git a/config/config_loader_test.go b/config/config_loader_test.go
index 5cda3b2..b9bb809 100644
--- a/config/config_loader_test.go
+++ b/config/config_loader_test.go
@@ -191,6 +191,26 @@
 	providerConfig = nil
 }
 
+func TestSetDefaultValue(t *testing.T) {
+	proConfig := &ProviderConfig{Registries: make(map[string]*RegistryConfig), Protocols: make(map[string]*ProtocolConfig)}
+	assert.Nil(t, proConfig.ApplicationConfig)
+	setDefaultValue(proConfig)
+	assert.Equal(t, proConfig.Registries["demoZK"].Address, "127.0.0.1:2181")
+	assert.Equal(t, proConfig.Registries["demoZK"].TimeoutStr, "3s")
+	assert.Equal(t, proConfig.Registries["demoZK"].Protocol, "zookeeper")
+	assert.Equal(t, proConfig.Protocols["dubbo"].Name, "dubbo")
+	assert.Equal(t, proConfig.Protocols["dubbo"].Port, "20000")
+	assert.NotNil(t, proConfig.ApplicationConfig)
+
+	conConfig := &ConsumerConfig{Registries: make(map[string]*RegistryConfig)}
+	assert.Nil(t, conConfig.ApplicationConfig)
+	setDefaultValue(conConfig)
+	assert.Equal(t, conConfig.Registries["demoZK"].Address, "127.0.0.1:2181")
+	assert.Equal(t, conConfig.Registries["demoZK"].TimeoutStr, "3s")
+	assert.Equal(t, conConfig.Registries["demoZK"].Protocol, "zookeeper")
+	assert.NotNil(t, conConfig.ApplicationConfig)
+
+}
 func TestConfigLoaderWithConfigCenter(t *testing.T) {
 	extension.SetConfigCenterFactory("mock", func() config_center.DynamicConfigurationFactory {
 		return &config_center.MockDynamicConfigurationFactory{}