AdapterFile

AdapterFile是框架默认的配置管理实现方式,基于文件的配置加载和读取。

通过g.Cfg单例对象使用

大部分场景下,我们可以通过框架已经封装好的g.Cfg单例对象来便捷使用基于文件的配置管理实现。例如:

config.yaml

server:
  address:     ":8888"
  openapiPath: "/api.json"
  swaggerPath: "/swagger"
  dumpRouterMap: false

database:
  default:
    link:  "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
    debug:  true

main.go

package main

import (
	"fmt"

	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/os/gctx"
)

func main() {
	var ctx = gctx.New()
	fmt.Println(g.Cfg().MustGet(ctx, "server.address").String())
	fmt.Println(g.Cfg().MustGet(ctx, "database.default").Map())
}

运行后,终端输出:

:8888
map[debug:true link:mysql:root:12345678@tcp(127.0.0.1:3306)/test]

 通过gcfg.NewWithAdapter使用

 我们也可以通过配置组件的NewWithAdapter方法来创建一个基于给定Adapter的配置管理对象,当然,在这里我们给一个AdapterFile接口对象。


config.yaml

server:
  address:     ":8888"
  openapiPath: "/api.json"
  swaggerPath: "/swagger"
  dumpRouterMap: false

database:
  default:
    link:  "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
    debug:  true

main.go

package main

import (
	"fmt"

	"github.com/gogf/gf/v2/os/gcfg"
	"github.com/gogf/gf/v2/os/gctx"
)

func main() {
	var ctx = gctx.New()
	adapter, err := gcfg.NewAdapterFile("config")
	if err != nil {
		panic(err)
	}
	config := gcfg.NewWithAdapter(adapter)
	fmt.Println(config.MustGet(ctx, "server.address").String())
	fmt.Println(config.MustGet(ctx, "database.default").Map())
}

运行后,终端输出:

:8888
map[debug:true link:mysql:root:12345678@tcp(127.0.0.1:3306)/test]


Content Menu

  • No labels

1 Comment

  1. 我在写apollo的配置适配器,发现个问题。

    projectName这个key找不到。
    打印了一下解析出来的json信息发现key变成projectname了,应该是转小写了。
    看了下代码,发现还真是

    不太理解解析properties格式配置的时候,为啥最后一层的key要转成小写。

    都转成小写的话也还好,Get的时候也把key转成小写去查就行了,这一部分转成小写就不处理了。不知道是啥原因。求解答。