gcfg
组件采用了接口化设计,以实现高扩展性。通过接口化设计的方式,使用者可以自定义对接的配置获取方式,例如etcd, zookeeper, consul, kubernetes configmap, apollo
等等。
https://github.com/gogf/gf/blob/master/os/gcfg/gcfg_adaper.go
// Adapter is the interface for configuration retrieving. type Adapter interface { // Available checks and returns the configuration service is available. // The optional parameter `resource` specifies certain configuration resource. // // It returns true if configuration file is present in default AdapterFile, or else false. // Note that this function does not return error as it just does simply check for backend configuration service. Available(ctx context.Context, resource ...string) (ok bool) // Get retrieves and returns value by specified `pattern`. Get(ctx context.Context, pattern string) (value interface{}, err error) // Data retrieves and returns all configuration data as map type. // Note that this function may lead lots of memory usage if configuration data is too large, // you can implement this function if necessary. Data(ctx context.Context) (data map[string]interface{}, err error) } |
配置对象可以通过SetAdapter
方法设置当前使用的接口实现。
// SetAdapter sets the adapter of current Config object. func (c *Config) SetAdapter(adapter Adapter) |
配置对象可以通过GetAdapter
方法获取当前使用的接口实现。
// GetAdapter returns the adapter of current Config object. func (c *Config) GetAdapter() Adapter |