framework1/framework/provider.go

24 lines
1.1 KiB
Go
Raw Normal View History

2024-10-18 17:21:19 +08:00
package framework
// NewInstance 定义了如何创建一个新实例,所有服务容器的创建服务
type NewInstance func(...interface{}) (interface{}, error)
type ServiceProvider interface {
// Register 在服务容器中注册了一个实例化服务的方法,是否在注册的时候就实例化这个服务,需要参考 IsDefer 接口。
Register(Container) NewInstance
// Boot 在调用实例化服务的时候会调用,可以把一些准备工作:基础配置,初始化参数的操作放在这个里面。
//如果 Boot 返回 error整个服务实例化就会实例化失败返回错误
Boot(Container) error
// IsDefer 决定是否在注册的时候实例化这个服务,如果不是注册的时候实例化,那就是在第一次 make 的时候进行实例化操作
//false 表示不需要延迟实例化在注册的时候就实例化。true 表示延迟实例化
IsDefer() bool
// Params params 定义传递给 NewInstance 的参数,可以自定义多个,建议将 container 作为第一个参数
Params(Container) []interface{}
// Name 代表了这个服务提供者的凭证
Name() string
}