diff --git a/common/extension/config_post_processor.go b/common/extension/config_post_processor.go
index 2f0e525ef757083dd690c80f75060c50e73fe095..db126b744d54562a7f45b59aec26ef6e950a23a8 100644
--- a/common/extension/config_post_processor.go
+++ b/common/extension/config_post_processor.go
@@ -17,25 +17,27 @@
 
 package extension
 
-import "github.com/apache/dubbo-go/config"
+import (
+	"github.com/apache/dubbo-go/config/interfaces"
+)
 
 var (
-	processors = make(map[string]config.ConfigPostProcessor)
+	processors = make(map[string]interfaces.ConfigPostProcessor)
 )
 
 // SetConfigPostProcessor registers a ConfigPostProcessor with the given name.
-func SetConfigPostProcessor(name string, processor config.ConfigPostProcessor) {
+func SetConfigPostProcessor(name string, processor interfaces.ConfigPostProcessor) {
 	processors[name] = processor
 }
 
 // GetConfigPostProcessor finds a ConfigPostProcessor by name.
-func GetConfigPostProcessor(name string) config.ConfigPostProcessor {
+func GetConfigPostProcessor(name string) interfaces.ConfigPostProcessor {
 	return processors[name]
 }
 
 // GetConfigPostProcessors returns all registered instances of ConfigPostProcessor.
-func GetConfigPostProcessors() []config.ConfigPostProcessor {
-	ret := make([]config.ConfigPostProcessor, 0, len(processors))
+func GetConfigPostProcessors() []interfaces.ConfigPostProcessor {
+	ret := make([]interfaces.ConfigPostProcessor, 0, len(processors))
 	for _, v := range processors {
 		ret = append(ret, v)
 	}
diff --git a/config/config_post_processor.go b/config/interfaces/config_post_processor.go
similarity index 79%
rename from config/config_post_processor.go
rename to config/interfaces/config_post_processor.go
index 994b737fcc8efff7085772849150a59f7e4763f0..e678d1cdb2641e55a3c0e526f9149455a36604b3 100644
--- a/config/config_post_processor.go
+++ b/config/interfaces/config_post_processor.go
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-package config
+package interfaces
 
 // ConfigPostProcessor is an extension to give users a chance to customize configs against ReferenceConfig and
 // ServiceConfig during deployment time.
 type ConfigPostProcessor interface {
-	// PostProcessReferenceConfig customizes ReferenceConfig
-	PostProcessReferenceConfig(rc *ReferenceConfig)
+	// PostProcessReferenceConfig customizes ReferenceConfig's params
+	PostProcessReferenceConfig(params *map[string]string)
 
-	// PostProcessServiceConfig customizes ServiceConfig
-	PostProcessServiceConfig(sc *ServiceConfig)
+	// PostProcessServiceConfig customizes ServiceConfig's params
+	PostProcessServiceConfig(params *map[string]string)
 }
diff --git a/config/reference_config.go b/config/reference_config.go
index b92a62462442fb953a7b40e8cde0efaeb77e3692..e660890c398b7e012e24843781547b047d3b146e 100644
--- a/config/reference_config.go
+++ b/config/reference_config.go
@@ -254,6 +254,6 @@ func (c *ReferenceConfig) GenericLoad(id string) {
 // postProcessConfig asks registered ConfigPostProcessor to post-process the current ReferenceConfig.
 func (c *ReferenceConfig) postProcessConfig() {
 	for _, p := range extension.GetConfigPostProcessors() {
-		p.PostProcessReferenceConfig(c)
+		p.PostProcessReferenceConfig(&c.Params)
 	}
 }
diff --git a/config/service_config.go b/config/service_config.go
index 01f8c3a86ac659e1308b4364e871514098fafb24..ec798b1177da2f3838c25deb5b4b55777cc1a290 100644
--- a/config/service_config.go
+++ b/config/service_config.go
@@ -337,6 +337,6 @@ func (c *ServiceConfig) GetExportedUrls() []*common.URL {
 // postProcessConfig asks registered ConfigPostProcessor to post-process the current ServiceConfig.
 func (c *ServiceConfig) postProcessConfig() {
 	for _, p := range extension.GetConfigPostProcessors() {
-		p.PostProcessServiceConfig(c)
+		p.PostProcessServiceConfig(&c.Params)
 	}
 }