补充DI
This commit is contained in:
parent
ed5734c9c4
commit
8d015aa3e7
@ -24,3 +24,4 @@ Web全栈开发(Book Api): 必须完成
|
|||||||
|
|
||||||
day01: book restful api + config 包 的版本, 跑起来能验证成功
|
day01: book restful api + config 包 的版本, 跑起来能验证成功
|
||||||
day02: book mvc 版本是必须要写出来(log 包允许你copy), mcube的版本是体验, mcube版本不做要求
|
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
|
### Make
|
||||||
|
|
||||||
```makefile
|
```makefile
|
||||||
@ -486,11 +485,62 @@ help: ## Display this help screen
|
|||||||
|
|
||||||
1. 颁发Token是不是要 Set-Cookie
|
1. 颁发Token是不是要 Set-Cookie
|
||||||
```go
|
```go
|
||||||
// 设置Cookie
|
// 设置Cookie
|
||||||
ctx.SetCookie(token.COOKIE_NAME, ins.AccessToken, ins.AccessTokenExpireTTL(), "/", application.Get().Domain(), false, true)
|
ctx.SetCookie(token.COOKIE_NAME, ins.AccessToken, ins.AccessTokenExpireTTL(), "/", application.Get().Domain(), false, true)
|
||||||
```
|
```
|
||||||
|
|
||||||
2. 获取Token是不是也需要Cookie当作获取Token
|
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/exception"
|
||||||
"github.com/infraboard/mcube/v2/ioc"
|
"github.com/infraboard/mcube/v2/ioc"
|
||||||
"github.com/infraboard/mcube/v2/ioc/config/datasource"
|
"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/token"
|
||||||
"gitlab.com/go-course-project/go17/vblog/apps/user"
|
"gitlab.com/go-course-project/go17/vblog/apps/user"
|
||||||
)
|
)
|
||||||
@ -22,6 +23,9 @@ type TokenServiceImpl struct {
|
|||||||
|
|
||||||
// user service
|
// user service
|
||||||
user user.AdminService
|
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 {
|
func (*TokenServiceImpl) Name() string {
|
||||||
@ -31,6 +35,8 @@ func (*TokenServiceImpl) Name() string {
|
|||||||
// 他需要自己去获取依赖,通过ioc
|
// 他需要自己去获取依赖,通过ioc
|
||||||
func (i *TokenServiceImpl) Init() error {
|
func (i *TokenServiceImpl) Init() error {
|
||||||
i.user = user.GetService()
|
i.user = user.GetService()
|
||||||
|
|
||||||
|
log.L().Debug().Msgf("DefaultExpiredTTL: %d", i.DefaultExpiredTTL)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,3 +29,6 @@
|
|||||||
[log.file]
|
[log.file]
|
||||||
# 是否开启文件记录
|
# 是否开启文件记录
|
||||||
enable = true
|
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":"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":"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":"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