补充DI
This commit is contained in:
parent
ed5734c9c4
commit
8d015aa3e7
@ -24,3 +24,4 @@ Web全栈开发(Book Api): 必须完成
|
||||
|
||||
day01: book restful api + config 包 的版本, 跑起来能验证成功
|
||||
day02: book mvc 版本是必须要写出来(log 包允许你copy), mcube的版本是体验, mcube版本不做要求
|
||||
day05: 自己使用map这种数据结果 做一个 轻量级的ioc框架
|
@ -449,7 +449,6 @@ curl --location 'http://127.0.0.1:8080/api/vblog/v1/tokens' \
|
||||
|
||||
## 其他的优化
|
||||
|
||||
|
||||
### Make
|
||||
|
||||
```makefile
|
||||
@ -486,11 +485,62 @@ help: ## Display this help screen
|
||||
|
||||
1. 颁发Token是不是要 Set-Cookie
|
||||
```go
|
||||
// 设置Cookie
|
||||
ctx.SetCookie(token.COOKIE_NAME, ins.AccessToken, ins.AccessTokenExpireTTL(), "/", application.Get().Domain(), false, true)
|
||||
// 设置Cookie
|
||||
ctx.SetCookie(token.COOKIE_NAME, ins.AccessToken, ins.AccessTokenExpireTTL(), "/", application.Get().Domain(), false, true)
|
||||
```
|
||||
|
||||
2. 获取Token是不是也需要Cookie当作获取Token
|
||||
|
||||
```go
|
||||
// 再尝试从cookie中获取
|
||||
if accessToken == "" {
|
||||
tc, err := c.Cookie(token.COOKIE_NAME)
|
||||
if err != nil {
|
||||
log.L().Error().Msgf("get cookie error, %s", err)
|
||||
} else {
|
||||
accessToken = tc
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 优雅关闭
|
||||
|
||||
```go
|
||||
// 优雅关闭HTTP服务
|
||||
if err := h.server.Shutdown(ctx); err != nil {
|
||||
return fmt.Errorf("http graceful shutdown timeout, force exit")
|
||||
}
|
||||
```
|
||||
|
||||
### DI: 依赖注入
|
||||
|
||||
通过配置 ---> 获取一个对象,直接使用
|
||||
|
||||
+ 注入工具:https://www.mcube.top/docs/framework/component/mysql/
|
||||
+ 为你程序注入配置:
|
||||
|
||||
```toml
|
||||
[token]
|
||||
default_expired_ttl = 3600
|
||||
```
|
||||
|
||||
|
||||
|
||||
```go
|
||||
// 定义一个struct, 用于实现 UserService就是刚才定义的接口
|
||||
// 怎么才能判断这个结构体没有实现这个接口
|
||||
// unmashal TokenServiceImpl <---> Config文件
|
||||
type TokenServiceImpl struct {
|
||||
ioc.ObjectImpl
|
||||
|
||||
// user service
|
||||
user user.AdminService
|
||||
|
||||
// 如果你控制器有一些配置
|
||||
DefaultExpiredTTL int `json:"default_expired_ttl" yaml:"default_expired_ttl" toml:"default_expired_ttl" env:"DEFAULT_EXPIRED_TTL"`
|
||||
}
|
||||
|
||||
func (*TokenServiceImpl) Name() string {
|
||||
return token.AppName
|
||||
}
|
||||
```
|
@ -7,6 +7,7 @@ import (
|
||||
"github.com/infraboard/mcube/v2/exception"
|
||||
"github.com/infraboard/mcube/v2/ioc"
|
||||
"github.com/infraboard/mcube/v2/ioc/config/datasource"
|
||||
"github.com/infraboard/mcube/v2/ioc/config/log"
|
||||
"gitlab.com/go-course-project/go17/vblog/apps/token"
|
||||
"gitlab.com/go-course-project/go17/vblog/apps/user"
|
||||
)
|
||||
@ -22,6 +23,9 @@ type TokenServiceImpl struct {
|
||||
|
||||
// user service
|
||||
user user.AdminService
|
||||
|
||||
// 如果你控制器有一些配置
|
||||
DefaultExpiredTTL int `json:"default_expired_ttl" yaml:"default_expired_ttl" toml:"default_expired_ttl" env:"DEFAULT_EXPIRED_TTL"`
|
||||
}
|
||||
|
||||
func (*TokenServiceImpl) Name() string {
|
||||
@ -31,6 +35,8 @@ func (*TokenServiceImpl) Name() string {
|
||||
// 他需要自己去获取依赖,通过ioc
|
||||
func (i *TokenServiceImpl) Init() error {
|
||||
i.user = user.GetService()
|
||||
|
||||
log.L().Debug().Msgf("DefaultExpiredTTL: %d", i.DefaultExpiredTTL)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -29,3 +29,6 @@
|
||||
[log.file]
|
||||
# 是否开启文件记录
|
||||
enable = true
|
||||
|
||||
[token]
|
||||
default_expired_ttl = 3600
|
@ -141,3 +141,24 @@
|
||||
{"level":"info","component":"http","time":"2024-12-15T15:10:29+08:00","caller":"config/http/http.go:152","message":"start graceful shutdown"}
|
||||
{"level":"error","component":"http","time":"2024-12-15T15:10:29+08:00","caller":"config/http/http.go:146","message":"http: Server closed"}
|
||||
{"level":"info","component":"server","time":"2024-12-15T15:10:29+08:00","caller":"ioc/server/server.go:115","message":"http service stop complete"}
|
||||
{"level":"info","component":"gin_webframework","time":"2024-12-15T15:41:14+08:00","caller":"config/gin/framework.go:41","message":"enable gin recovery"}
|
||||
{"level":"info","component":"server","time":"2024-12-15T15:41:15+08:00","caller":"ioc/server/server.go:74","message":"loaded configs: [app.v1 trace.v1 log.v1 validator.v1 gin_webframework.v1 datasource.v1 grpc.v1 http.v1]"}
|
||||
{"level":"info","component":"server","time":"2024-12-15T15:41:15+08:00","caller":"ioc/server/server.go:75","message":"loaded controllers: [token.v1 user.v1 blog.v1]"}
|
||||
{"level":"info","component":"server","time":"2024-12-15T15:41:15+08:00","caller":"ioc/server/server.go:76","message":"loaded apis: [blogs.v1 tokens.v1]"}
|
||||
{"level":"info","component":"server","time":"2024-12-15T15:41:15+08:00","caller":"ioc/server/server.go:77","message":"loaded defaults: []"}
|
||||
{"level":"info","component":"http","time":"2024-12-15T15:41:15+08:00","caller":"config/http/http.go:144","message":"HTTP服务启动成功, 监听地址: 127.0.0.1:8080"}
|
||||
{"level":"info","component":"server","time":"2024-12-15T15:41:31+08:00","caller":"ioc/server/server.go:101","message":"receive signal 'interrupt', start graceful shutdown"}
|
||||
{"level":"info","component":"http","time":"2024-12-15T15:41:31+08:00","caller":"config/http/http.go:152","message":"start graceful shutdown"}
|
||||
{"level":"error","component":"http","time":"2024-12-15T15:41:31+08:00","caller":"config/http/http.go:146","message":"http: Server closed"}
|
||||
{"level":"info","component":"server","time":"2024-12-15T15:41:31+08:00","caller":"ioc/server/server.go:115","message":"http service stop complete"}
|
||||
{"level":"info","component":"gin_webframework","time":"2024-12-15T15:53:01+08:00","caller":"config/gin/framework.go:41","message":"enable gin recovery"}
|
||||
{"level":"debug","time":"2024-12-15T15:53:01+08:00","caller":"token/impl/impl.go:39","message":"DefaultExpiredTTL: 3600"}
|
||||
{"level":"info","component":"server","time":"2024-12-15T15:53:01+08:00","caller":"ioc/server/server.go:74","message":"loaded configs: [app.v1 trace.v1 log.v1 validator.v1 gin_webframework.v1 datasource.v1 grpc.v1 http.v1]"}
|
||||
{"level":"info","component":"server","time":"2024-12-15T15:53:01+08:00","caller":"ioc/server/server.go:75","message":"loaded controllers: [token.v1 user.v1 blog.v1]"}
|
||||
{"level":"info","component":"server","time":"2024-12-15T15:53:01+08:00","caller":"ioc/server/server.go:76","message":"loaded apis: [blogs.v1 tokens.v1]"}
|
||||
{"level":"info","component":"server","time":"2024-12-15T15:53:01+08:00","caller":"ioc/server/server.go:77","message":"loaded defaults: []"}
|
||||
{"level":"info","component":"http","time":"2024-12-15T15:53:01+08:00","caller":"config/http/http.go:144","message":"HTTP服务启动成功, 监听地址: 127.0.0.1:8080"}
|
||||
{"level":"info","component":"server","time":"2024-12-15T15:55:34+08:00","caller":"ioc/server/server.go:101","message":"receive signal 'interrupt', start graceful shutdown"}
|
||||
{"level":"info","component":"http","time":"2024-12-15T15:55:34+08:00","caller":"config/http/http.go:152","message":"start graceful shutdown"}
|
||||
{"level":"error","component":"http","time":"2024-12-15T15:55:34+08:00","caller":"config/http/http.go:146","message":"http: Server closed"}
|
||||
{"level":"info","component":"server","time":"2024-12-15T15:55:34+08:00","caller":"ioc/server/server.go:115","message":"http service stop complete"}
|
||||
|
Loading…
x
Reference in New Issue
Block a user