Skip to content

Commit 6a32f12

Browse files
authored
Merge pull request #5 from go-spring-projects/fix-readme
Update README.md
2 parents 3ff2f73 + efee3ff commit 6a32f12

File tree

2 files changed

+88
-78
lines changed

2 files changed

+88
-78
lines changed

README.md

Lines changed: 43 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -66,26 +66,27 @@ In addition to implementing a powerful IoC container similar to Java Spring, Go-
6666
package main
6767

6868
import (
69+
"context"
6970
"log/slog"
7071

7172
"github.com/go-spring-projects/go-spring/gs"
7273
)
7374

7475
type MyApp struct {
75-
Logger *slog.Logger `logger:""`
76+
Logger *slog.Logger `logger:""`
7677
}
7778

78-
func (m *MyApp) OnInit(ctx gs.Context) error {
79-
m.Logger.Info("Hello world")
80-
return nil
79+
func (m *MyApp) OnInit(ctx context.Context) error {
80+
m.Logger.Info("Hello world")
81+
return nil
8182
}
8283

8384
func main() {
84-
// register object bean
85-
gs.Object(new(MyApp))
86-
87-
// run go-spring boot app
88-
gs.Run()
85+
// register object bean
86+
gs.Object(new(MyApp))
87+
88+
// run go-spring boot app
89+
gs.Run()
8990
}
9091

9192
// Output:
@@ -97,9 +98,11 @@ func main() {
9798
```go
9899
package mypkg
99100

101+
import "github.com/go-spring-projects/go-spring/gs"
102+
100103
type MyApp struct {}
101104

102-
type NewApp() *MyApp {
105+
func NewApp() *MyApp {
103106
return &MyApp{}
104107
}
105108

@@ -202,6 +205,7 @@ In this example, we will use [go-validator/validator](https://github.com/go-vali
202205
package main
203206
204207
import (
208+
"context"
205209
"fmt"
206210
"log/slog"
207211
@@ -242,7 +246,7 @@ type MysqlDatabase struct {
242246
Options DBOptions `value:"${db}"`
243247
}
244248

245-
func (md *MysqlDatabase) OnInit(ctx gs.Context) error {
249+
func (md *MysqlDatabase) OnInit(ctx context.Context) error {
246250
md.Logger.Info("mysql connection summary",
247251
"url", fmt.Sprintf("mysql://%s:%s@%s:%d/%s", md.Options.UserName, md.Options.Password, md.Options.IP, md.Options.Port, md.Options.DB))
248252
return nil
@@ -278,6 +282,7 @@ Allows dynamically refresh properties during runtime, not only supporting basic
278282
package main
279283

280284
import (
285+
"context"
281286
"fmt"
282287
"log/slog"
283288
"net/http"
@@ -290,7 +295,7 @@ type Handler struct {
290295
Open dync.Bool `value:"${server.open:=true}"`
291296
}
292297

293-
func (h *Handler) OnInit(ctx gs.Context) error {
298+
func (h *Handler) OnInit(ctx context.Context) error {
294299

295300
http.HandleFunc("/server/status", func(writer http.ResponseWriter, request *http.Request) {
296301
if !h.Open.Value() {
@@ -307,9 +312,9 @@ type Server struct {
307312
Logger *slog.Logger `logger:""`
308313
}
309314

310-
func (s *Server) OnInit(ctx gs.Context) error {
315+
func (s *Server) OnInit(ctx context.Context) error {
311316

312-
props := ctx.(gs.Container).Properties()
317+
props := gs.FromContext(ctx).(gs.Container).Properties()
313318

314319
http.HandleFunc("/server/status/open", func(writer http.ResponseWriter, request *http.Request) {
315320
props.Set("server.open", "true")
@@ -338,7 +343,6 @@ func main() {
338343
}
339344
}
340345

341-
342346
// Output:
343347
//
344348
// $ curl http://127.0.0.1:7878/server/status
@@ -363,6 +367,7 @@ Automatically injects named logger, the logger library powered by the std [slog]
363367
package main
364368

365369
import (
370+
"context"
366371
"io"
367372
"log/slog"
368373
"os"
@@ -379,27 +384,27 @@ func init() {
379384
Primary bool `value:"${primary:=false}"`
380385
}
381386

382-
/*
383-
logger:
384-
# application logger.
385-
app:
386-
level: debug
387-
file: /your/path/app.log
388-
console: false
389-
primary: true
390-
391-
# system logger.
392-
sys:
393-
level: info
394-
file: /your/path/sys.log
395-
console: true
396-
397-
# trace logger.
398-
trace:
399-
level: info
400-
file: /your/path/trace.log
401-
console: false
402-
*/
387+
/*
388+
logger:
389+
# application logger.
390+
app:
391+
level: debug
392+
file: /your/path/app.log
393+
console: false
394+
primary: true
395+
396+
# system logger.
397+
sys:
398+
level: info
399+
file: /your/path/sys.log
400+
console: true
401+
402+
# trace logger.
403+
trace:
404+
level: info
405+
file: /your/path/trace.log
406+
console: false
407+
*/
403408

404409
gs.OnProperty("logger", func(loggers map[string]Logger) {
405410
for name, logger := range loggers {
@@ -448,15 +453,15 @@ type App struct {
448453
TraceLogger *slog.Logger `logger:"${app.trace.logger:=trace}"`
449454
}
450455

451-
func (app *App) OnInit(ctx gs.Context) error {
456+
func (app *App) OnInit(ctx context.Context) error {
452457
app.Logger.Info("hello primary logger")
453458
app.SysLogger.Info("hello system logger")
454459
app.TraceLogger.Info("hello trace logger")
455460
return nil
456461
}
457462

458463
func main() {
459-
464+
460465
gs.Property("logger.app.level", "debug")
461466
gs.Property("logger.app.file", "./app.log")
462467
gs.Property("logger.app.console", "true")

README_CN.md

Lines changed: 45 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
`go get github.com/go-spring-projects/go-spring@latest`
2626

2727
### 主要特性
28-
* **IoC容器**: 实现了基于反射的控制反转(IoC)容器,支持结构体、函数和常量的注入。这意味着你可以使用' autowired '标签来自动注入依赖,而不必手动管理它们。
28+
* **IoC容器**: 实现了基于反射的控制反转(IoC)容器,支持结构体、函数和常量的注入。这意味着你可以使用`autowired`标签来自动注入依赖,而不必手动管理它们。
2929
* **配置管理**: 受Spring的@Value注释的启发,Go-Spring允许您从多个源(如环境变量、文件、命令行参数等)获取配置项。这为配置管理带来了前所未有的灵活性。
3030
* **配置验证器**: 通过支持自定义验证器扩展扩展了其健壮的配置管理功能。这使您能够对属性执行有效性检查,确保仅将有效的配置应用于您的应用程序。
3131
* **结构化日志**: 使用标准库slog提供内置日志记录器支持,以实现有效和简化的日志记录。这种增强提供了清晰、简洁和结构良好的日志信息,有助于系统调试和性能监视。
@@ -66,26 +66,27 @@
6666
package main
6767

6868
import (
69+
"context"
6970
"log/slog"
7071

7172
"github.com/go-spring-projects/go-spring/gs"
7273
)
7374

7475
type MyApp struct {
75-
Logger *slog.Logger `logger:""`
76+
Logger *slog.Logger `logger:""`
7677
}
7778

78-
func (m *MyApp) OnInit(ctx gs.Context) error {
79-
m.Logger.Info("Hello world")
80-
return nil
79+
func (m *MyApp) OnInit(ctx context.Context) error {
80+
m.Logger.Info("Hello world")
81+
return nil
8182
}
8283

8384
func main() {
84-
// register object bean
85-
gs.Object(new(MyApp))
86-
87-
// run go-spring boot app
88-
gs.Run()
85+
// register object bean
86+
gs.Object(new(MyApp))
87+
88+
// run go-spring boot app
89+
gs.Run()
8990
}
9091

9192
// Output:
@@ -97,9 +98,11 @@ func main() {
9798
```go
9899
package mypkg
99100

101+
import "github.com/go-spring-projects/go-spring/gs"
102+
100103
type MyApp struct {}
101104

102-
type NewApp() *MyApp {
105+
func NewApp() *MyApp {
103106
return &MyApp{}
104107
}
105108

@@ -201,6 +204,7 @@ db:
201204
package main
202205
203206
import (
207+
"context"
204208
"fmt"
205209
"log/slog"
206210
@@ -241,7 +245,7 @@ type MysqlDatabase struct {
241245
Options DBOptions `value:"${db}"`
242246
}
243247

244-
func (md *MysqlDatabase) OnInit(ctx gs.Context) error {
248+
func (md *MysqlDatabase) OnInit(ctx context.Context) error {
245249
md.Logger.Info("mysql connection summary",
246250
"url", fmt.Sprintf("mysql://%s:%s@%s:%d/%s", md.Options.UserName, md.Options.Password, md.Options.IP, md.Options.Port, md.Options.DB))
247251
return nil
@@ -271,12 +275,13 @@ func main() {
271275
272276
### 动态刷新属性
273277
274-
允许在运行时动态刷新属性,不仅支持基本数据类型,还支持结构、切片和映射类型
278+
允许在运行时动态刷新属性,不仅支持基本数据类型,还支持结构、切片和Map类型
275279
276280
```go
277281
package main
278282

279283
import (
284+
"context"
280285
"fmt"
281286
"log/slog"
282287
"net/http"
@@ -289,7 +294,7 @@ type Handler struct {
289294
Open dync.Bool `value:"${server.open:=true}"`
290295
}
291296

292-
func (h *Handler) OnInit(ctx gs.Context) error {
297+
func (h *Handler) OnInit(ctx context.Context) error {
293298

294299
http.HandleFunc("/server/status", func(writer http.ResponseWriter, request *http.Request) {
295300
if !h.Open.Value() {
@@ -306,9 +311,9 @@ type Server struct {
306311
Logger *slog.Logger `logger:""`
307312
}
308313

309-
func (s *Server) OnInit(ctx gs.Context) error {
314+
func (s *Server) OnInit(ctx context.Context) error {
310315

311-
props := ctx.(gs.Container).Properties()
316+
props := gs.FromContext(ctx).(gs.Container).Properties()
312317

313318
http.HandleFunc("/server/status/open", func(writer http.ResponseWriter, request *http.Request) {
314319
props.Set("server.open", "true")
@@ -337,7 +342,6 @@ func main() {
337342
}
338343
}
339344

340-
341345
// Output:
342346
//
343347
// $ curl http://127.0.0.1:7878/server/status
@@ -362,6 +366,7 @@ func main() {
362366
package main
363367

364368
import (
369+
"context"
365370
"io"
366371
"log/slog"
367372
"os"
@@ -378,27 +383,27 @@ func init() {
378383
Primary bool `value:"${primary:=false}"`
379384
}
380385

381-
/*
382-
logger:
383-
# application logger.
384-
app:
385-
level: debug
386-
file: /your/path/app.log
387-
console: false
388-
primary: true
389-
390-
# system logger.
391-
sys:
392-
level: info
393-
file: /your/path/sys.log
394-
console: true
395-
396-
# trace logger.
397-
trace:
398-
level: info
399-
file: /your/path/trace.log
400-
console: false
401-
*/
386+
/*
387+
logger:
388+
# application logger.
389+
app:
390+
level: debug
391+
file: /your/path/app.log
392+
console: false
393+
primary: true
394+
395+
# system logger.
396+
sys:
397+
level: info
398+
file: /your/path/sys.log
399+
console: true
400+
401+
# trace logger.
402+
trace:
403+
level: info
404+
file: /your/path/trace.log
405+
console: false
406+
*/
402407

403408
gs.OnProperty("logger", func(loggers map[string]Logger) {
404409
for name, logger := range loggers {
@@ -447,15 +452,15 @@ type App struct {
447452
TraceLogger *slog.Logger `logger:"${app.trace.logger:=trace}"`
448453
}
449454

450-
func (app *App) OnInit(ctx gs.Context) error {
455+
func (app *App) OnInit(ctx context.Context) error {
451456
app.Logger.Info("hello primary logger")
452457
app.SysLogger.Info("hello system logger")
453458
app.TraceLogger.Info("hello trace logger")
454459
return nil
455460
}
456461

457462
func main() {
458-
463+
459464
gs.Property("logger.app.level", "debug")
460465
gs.Property("logger.app.file", "./app.log")
461466
gs.Property("logger.app.console", "true")

0 commit comments

Comments
 (0)