Унифицированный инструмент для работы с конфигурациями: Props
Props — это унифицированный инструмент, который позволяет работать с различными конфигурационными источниками и преобразовывать их в формат, подобный свойствам (properties). Он предоставляет единый API для доступа к этим свойствам.
Поддерживаемые конфигурационные источники:
Свойства:
Другие особенности:
Установка:
go get -u github.com/tietang/props/v3
или через go mod:
go mod tidy go mod vendor
Использование:
Файлы свойств (properties):
формат: [key][=|:][value] \n
каждая строка представляет собой пару ключ-значение, разделённую знаком равенства или двоеточием. Ключ может быть любым символом, кроме знака равенства, двоеточия и пробела.
Пример: server.port=8080
или server.port: 8080
.
Чтение файла через kvs.ReadPropertyFile:
p, err := kvs.ReadPropertyFile("config.properties")
if err != nil {
panic(err)
}
stringValue, err := p.Get("prefix.key1")
fmt.Println(stringValue, err)
// Если не существует, возвращает значение по умолчанию
stringDefaultValue := p.GetDefault("prefix.key1", "default value")
fmt.Println(stringDefaultValue)
boolValue, err := p.GetBool("prefix.key2")
fmt.Println(boolValue)
boolDefaultValue := p.GetBoolDefault("prefix.key2", false)
fmt.Println(boolDefaultValue)
intValue, err := p.GetInt("prefix.key3")
fmt.Println(intValue)
intDefaultValue := p.GetIntDefault("prefix.key3", 1)
fmt.Println(intDefaultValue)
floatValue, err := p.GetFloat64("prefix.key4")
fmt.Println(floatValue)
floatDefaultValue := p.GetFloat64Default("prefix.key4", 1.2)
fmt.Println(floatDefaultValue)
Загрузка из io.Reader:
p := kvs.NewProperties()
p.Load(strings.NewReader("some data"))
p.Load(bytes.NewReader([]byte("some data")))
Создание через kvs.NewPropertiesConfigSource:
file := "/path/to/config.properties"
p := kvs.NewPropertiesConfigSource(file)
p = kvs.NewPropertiesConfigSourceByFile("name", file)
// Создание на основе карты памяти
m := make(map[string]string)
m["key"]="value"
p = kvs.NewPropertiesConfigSourceByMap("name", m)
Использование Properties ConfigSource:
var cs kvs.ConfigSource
//
cs = kvs.NewPropertiesConfigSource("config.properties")
cs = kvs.NewPropertiesConfigSourceByFile("config", "config.properties")
stringValue, err := cs.Get("prefix.key1")
// Если не существует, возвращает значение по умолчанию
stringDefaultValue := cs.GetDefault("prefix.key1", "default value")
boolValue, err := cs.GetBool("prefix.key2")
boolDefaultValue := cs.GetBoolDefault("prefix.key2", false)
intValue, err := cs.GetInt("prefix.key3")
intDefaultValue := cs.GetIntDefault("prefix.key3", 1)
floatValue, err := cs.GetFloat64("prefix.key4")
floatDefaultValue := cs.GetFloat64Default("prefix.key4", 1.2)
Файлы INI: формат:
[section]
[key1][=|:][value1]
[key1][=|:][value1]
...
Не поддерживает подразделы. Пример:
[server]
port: 8080
read.timeout=6000ms
[client]
connection.timeout=6s
query.timeout=6s
``` **p := ini.NewIniFileConfigSource(file)**
p = ini.NewIniFileConfigSourceByFile("name", file)
### Nacos
只支持key/properties配置形式。
例如有如下配置:
http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=test.id&group=testGroup&tenant=testTenant
```properties
key-0.x0=value-00
key-0.x1=value-01
key-0.x2=value-02
基本用法:
address := "127.0.0.1:8848"
c := NewNacosPropsConfigSource(address)
c.DataId = "test.id"
c.Tenant = "testTenant"
c.Group = "testGroup"
v:=c.GetDefault("key-0.x0","defaultval") //value-00
**Поддерживается только перевод текста, без кода.**
**p := ini.NewIniFileConfigSource (file)** — это строка кода на языке Go, которая создаёт новый объект типа *ini.IniFileConfigSource*, используя файл с данными конфигурации (*file*).
В этом контексте *ini* — это пакет, который предоставляет функции для работы с конфигурационными файлами в формате INI.
*ini.NewIniFileConfigSource* — функция, которая принимает путь к файлу конфигурации и возвращает новый объект *ini.IniFileConfigSource*. Этот объект можно использовать для чтения и записи данных из файла конфигурации.
Далее идёт описание того, как работает этот объект и как его можно использовать.
**ini.NewIniFileConfigSourceByFile ("name", file)** — эта функция аналогична предыдущей, но она также позволяет указать имя файла конфигурации (*"name"*). Это может быть полезно, если вы хотите создать несколько объектов *ini.IniFileConfigSource* для разных файлов конфигурации.
После этого идёт пример использования этих функций. В примере создаётся новый объект *c* типа *NewNacosPropsConfigSource*, который будет использоваться для получения данных конфигурации из сервера Nacos. Затем объекту *c* присваиваются значения свойств *DataId*, *Tenant* и *Group*. После этого вызывается метод *GetDefault* объекта *c*, чтобы получить значение свойства *key-0.x0* по умолчанию.
Этот пример показывает, как можно использовать объекты *ini.IniFileConfigSource* для получения данных конфигурации из различных источников. ```golang
kv1 := []string{"go.app.key1", "value1", "value1-2"}
kv2 := []string{"go.app.key2", "value2", "value2-2"}
p1 := kvs.NewEmptyMapConfigSource("map1")
p1.Set(kv1[0], kv1[1])
p1.Set(kv2[0], kv2[1])
p2 := kvs.NewEmptyMapConfigSource("map2")
p2.Set(kv1[0], kv1[2])
p2.Set(kv2[0], kv2[2])
conf.Add(p1)
conf.Add(p2)
//value1==value1-2
value1, err := conf.Get(kv1[0])
fmt.Println(value1)
//value2=value2-2
value2, err := conf.Get(kv2[0])
fmt.Println(value2)
Этот фрагмент кода написан на языке Go. Он описывает использование нескольких источников конфигурации с разными приоритетами.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )