修改对象的获取方式

This commit is contained in:
2025-11-30 13:50:28 +08:00
parent a655640ab2
commit 7585b8e9da
6 changed files with 279 additions and 73 deletions

View File

@@ -29,7 +29,7 @@
提供阿里云短信发送功能支持模板短信和批量发送使用Go标准库实现。
### 9. 工厂工具 (factory)
提供从配置直接创建已初始化客户端对象的功能,避免调用方重复实现创建逻辑。
提供从配置文件直接创建已初始化客户端对象的功能,包括数据库、Redis、邮件、短信、日志等避免调用方重复实现创建逻辑。
### 10. 日志工具 (logger)
提供统一的日志记录功能支持多种日志级别和输出方式使用Go标准库实现。
@@ -185,27 +185,33 @@ smsClient.SendSimple(
#### 使用工厂直接获取客户端(推荐)
```go
import (
"git.toowon.com/jimmy/go-common/config"
"git.toowon.com/jimmy/go-common/factory"
)
import "git.toowon.com/jimmy/go-common/factory"
// 加载配置并创建工厂
cfg, _ := config.LoadFromFile("./config.json")
fac := factory.NewFactory(cfg)
// 方式1直接从配置文件创建工厂最推荐
fac, _ := factory.NewFactoryFromFile("./config.json")
// 直接获取数据库对象(已初始化,可直接使用)
db, _ := fac.GetDatabase()
db.Find(&users) // 直接使用,无需再创建连接
// 获取Redis配置用于创建Redis客户端
redisConfig := fac.GetRedisConfig()
// 使用go-redis创建客户端
// rdb := redis.NewClient(&redis.Options{
// Addr: fmt.Sprintf("%s:%d", redisConfig.Host, redisConfig.Port),
// Password: redisConfig.Password,
// DB: redisConfig.Database,
// })
// 直接获取已初始化的客户端(无需重复实现创建逻辑)
emailClient, _ := fac.GetEmailClient()
smsClient, _ := fac.GetSMSClient()
logger, _ := fac.GetLogger()
// 直接使用
emailClient.SendSimple(...)
smsClient.SendSimple(...)
// 获取日志记录器(已初始化,可直接使用)
logger, _ := fac.GetLogger()
logger.Info("Application started")
logger.Error("Error occurred: %v", err)
```
更多示例请查看 [examples](./examples/) 目录。