diff --git a/drivers/plugin-manager/manager.go b/drivers/plugin-manager/manager.go index 21817c7f..7c77b2c2 100644 --- a/drivers/plugin-manager/manager.go +++ b/drivers/plugin-manager/manager.go @@ -27,6 +27,15 @@ type PluginManager struct { plugins Plugins pluginObjs eosc.Untyped[string, *PluginObj] workers eosc.IWorkers + + global eocontext.IChainPro +} + +func (p *PluginManager) Global() eocontext.IChainPro { + if p.global == nil { + p.global = p.createChain("global", map[string]*plugin.Config{}) + } + return p.global } func (p *PluginManager) Check(cfg interface{}) (profession, name, driver, desc string, err error) { diff --git a/drivers/router/dubbo-router/manager/init.go b/drivers/router/dubbo-router/manager/init.go index 622a0015..960fe016 100644 --- a/drivers/router/dubbo-router/manager/init.go +++ b/drivers/router/dubbo-router/manager/init.go @@ -38,8 +38,7 @@ func init() { bean.AddInitializingBeanFunc(func() { log.Debug("init router manager") - chainProxy = pluginManager.CreateRequest("global", map[string]*plugin.Config{}) + chainProxy = pluginManager.Global() manager.SetGlobalFilters(&chainProxy) - }) } diff --git a/drivers/router/grpc-router/manager/init.go b/drivers/router/grpc-router/manager/init.go index 9d01e57d..d84e373f 100644 --- a/drivers/router/grpc-router/manager/init.go +++ b/drivers/router/grpc-router/manager/init.go @@ -40,7 +40,7 @@ func init() { bean.Injection(&m) bean.AddInitializingBeanFunc(func() { log.Debug("init grpc router manager") - chainProxy = pluginManager.CreateRequest("global", map[string]*plugin.Config{}) + chainProxy = pluginManager.Global() routerManager.SetGlobalFilters(&chainProxy) }) diff --git a/drivers/router/http-router/manager/init.go b/drivers/router/http-router/manager/init.go index 816dbec3..0b8bc6b4 100644 --- a/drivers/router/http-router/manager/init.go +++ b/drivers/router/http-router/manager/init.go @@ -37,7 +37,7 @@ func init() { bean.Injection(&m) bean.AddInitializingBeanFunc(func() { log.Debug("init router manager") - chainProxy = pluginManager.CreateRequest("global", map[string]*plugin.Config{}) + chainProxy = pluginManager.Global() routerManager.SetGlobalFilters(&chainProxy) }) diff --git a/plugin/plugin.go b/plugin/plugin.go index 8a0e10d7..a3448472 100644 --- a/plugin/plugin.go +++ b/plugin/plugin.go @@ -5,7 +5,7 @@ import ( "reflect" ) -//Config 普通插件配置,在router、service、upstream的插件格式 +// Config 普通插件配置,在router、service、upstream的插件格式 type Config struct { Disable bool `json:"disable"` Config interface{} `json:"config"` @@ -13,6 +13,7 @@ type Config struct { type IPluginManager interface { CreateRequest(id string, conf map[string]*Config) eocontext.IChainPro + Global() eocontext.IChainPro GetConfigType(name string) (reflect.Type, bool) }