isc-gobase

module
v0.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 1, 2022 License: Apache-2.0

README

isc-gobase

大道至简,让使用者最简化使用

config包

config包主要用于加载和管理项目中配置文件中的内容,配置文件为"application"开头的格式

1. 配置文件路径

默认该文件与main函数所在的类同目录

// 示例
- applicaiton.go
- application.yml
- application-local.yml
2. 配置文件格式

支持yaml、yml、json、properties配置文件 优先级: json > properties > yaml > yml

3. 支持profile加载不同配置文件

格式:application-{profile}.yyy 其中profile对应的变量为:base.profiles.active 变量的设置可以有如下

  • 本地配置
  • 启动参数配置
  • 环境变量配置

优先级:本地配置 > 启动参数 > 环境变量

4. 内置的配置文件自动加载

目前内置的自动加载的配置文件有如下这些,后续随着工程越来越大会越来越多

api-module: api/xxx
server:
  port: xxx
  lookup: true/false
  gin:
    # gin运行的模式
    mode: debug/release/test
  
base:
  application:
    name: isc-demo-service
  profiles:
    active: local
  endpoint:
    # 健康检查处理,默认关闭
    health: 
      enable: true/false
    # 配置的动态实时变更,默认关闭
    config:
      enable: true/false
5. 支持直接获取配置值

config包中提供了各种类型的api,方便实时获取

// 基本类型
config.getValueInt("xxx.xxx")
config.getValueInt32("xxx.xxx")
config.getValueInt64("xxx.xxx")
config.getValueBool("xxx.xxx")
config.getValueString("xxx.xxx")
// ...

// 结构类型
config.getValueObject("xxx.xxx", &xxx)

示例:

var ServerCfg ServerConfig

// base前缀
type BaseConfig struct {
    Application AppApplication
    Data string
}

type AppApplication struct {
    Name string
}
base:
  application:
    name: "xxx-local"
  data: "test"
// 直接读取即可
config.getValueObject("base", &ServerCfg)
6. 支持文件的绝对和相对路径读取

配置路径默认是与main同目录,也支持绝对路径读取对应的配置,该api可以用于与运维同学

// 相对路径
config.LoadConfigFromRelativePath(xx)

// 绝对路径
config.LoadConfigFromAbsPath(xx)
7. 支持配置的叠加,相对路径和绝对路径

在配置已经加载完毕后,需要对一些配置进行覆盖,比如运维这边有相关的需求时候

// 相对路径
config.AppendConfigFromRelativePath(xx)

// 绝对路径
config.AppendConfigFromAbsPath(xx)
8. 支持自动读取cm文件

应用启动会默认读取/home/{base.application.name}/config/application-default.yml对应的内容并覆盖应用的配置中

9. 支持配置的在线查看以及实时变更

如下配置配置开启后,就可以在线查看应用的所有配置了

base:
  endpoint:
    # 配置的动态实时变更,默认关闭
    config:
      enable: true/false
// 查看应用所有配置
curl http://localhost:xxx/{api-module}system/config/values

// 查看应用的某个配置
curl http://localhost:xxx/{api-module}system/config/value/{key}

// 修改应用的配置
curl -X PUT http://localhost:xxx/{api-module}system/config/update -d '{"key":"xxx", "value":"yyyy"}'
注意

该配置的修改只对config.getValueXXX() 这种实时调用的配置有效,配置使用方式有两种

  • 实体化:在对应文件中直接将配置实体化起来
  • api实时调用:代码中使用时候直接调用config.getValueXXX()

其中动态变更只对api实时调用的方式有效

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL