AdapterFile

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

通过 g.Cfg 单例对象使用

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

config.yaml

  1. server:
  2. address: ":8888"
  3. openapiPath: "/api.json"
  4. swaggerPath: "/swagger"
  5. dumpRouterMap: false
  6. database:
  7. default:
  8. link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
  9. debug: true

main.go

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/gogf/gf/v2/frame/g"
  5. "github.com/gogf/gf/v2/os/gctx"
  6. )
  7. func main() {
  8. var ctx = gctx.New()
  9. fmt.Println(g.Cfg().MustGet(ctx, "server.address").String())
  10. fmt.Println(g.Cfg().MustGet(ctx, "database.default").Map())
  11. }

运行后,终端输出:

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

通过 gcfg.NewWithAdapter 使用

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

config.yaml

  1. server:
  2. address: ":8888"
  3. openapiPath: "/api.json"
  4. swaggerPath: "/swagger"
  5. dumpRouterMap: false
  6. database:
  7. default:
  8. link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
  9. debug: true

main.go

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/gogf/gf/v2/os/gcfg"
  5. "github.com/gogf/gf/v2/os/gctx"
  6. )
  7. func main() {
  8. var ctx = gctx.New()
  9. adapter, err := gcfg.NewAdapterFile("config")
  10. if err != nil {
  11. panic(err)
  12. }
  13. config := gcfg.NewWithAdapter(adapter)
  14. fmt.Println(config.MustGet(ctx, "server.address").String())
  15. fmt.Println(config.MustGet(ctx, "database.default").Map())
  16. }

运行后,终端输出:

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