65 lines
1.0 KiB
Markdown
65 lines
1.0 KiB
Markdown
# 配置(依赖注入)
|
|
|
|
|
|
## Config大对象
|
|
|
|
容易理解, 方便维护, 这个配置就是和项目绑定
|
|
|
|
```go
|
|
// 这歌对象就是程序配置
|
|
// yaml, toml
|
|
type Config struct {
|
|
Application *application `toml:"app" yaml:"app" json:"app"`
|
|
MySQL *mySQL `toml:"mysql" yaml:"mysql" json:"mysql"`
|
|
Log *Log `toml:"log" yaml:"log" json:"log"`
|
|
}
|
|
|
|
```
|
|
|
|
```yaml
|
|
app:
|
|
host: 127.0.0.1
|
|
port: 8080
|
|
mysql:
|
|
host: 127.0.0.1
|
|
port: 3306
|
|
database: go18
|
|
username: "root"
|
|
password: "123456"
|
|
debug: true
|
|
```
|
|
|
|
## 依赖注入
|
|
|
|
大对象,没法按照项目需求,自由组装
|
|
|
|
datasource
|
|
```toml
|
|
[datasource]
|
|
provider = "mysql"
|
|
host = "127.0.0.1"
|
|
port = 3306
|
|
database = ""
|
|
username = ""
|
|
password = ""
|
|
auto_migrate = false
|
|
debug = false
|
|
trace = true
|
|
```
|
|
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
// 自动解析配置文件里面, 相应的部分
|
|
"github.com/infraboard/mcube/v2/ioc/config/datasource"
|
|
)
|
|
|
|
func main() {
|
|
db := datasource.DB()
|
|
// 通过db对象进行数据库操作
|
|
fmt.Println(db)
|
|
}
|
|
``` |