ioc

package
v0.0.0-...-70cb23a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 26, 2024 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	API_NAMESPACE = "apis"
)
View Source
const (
	CONFIG_NAMESPACE = "configs"
)
View Source
const (
	CONTROLLER_NAMESPACE = "controllers"
)
View Source
const (
	DEFAULT_NAMESPACE = "default"
)
View Source
const (
	DEFAULT_VERSION = "v1"
)

Variables

This section is empty.

Functions

func ApiPathPrefix

func ApiPathPrefix(pathPrefix string, obj Object) string

func ApiPathPrefix(pathPrefix string, obm ObjectMeta, obj Object) string {

func ConfigIocObject

func ConfigIocObject(req *LoadConfigRequest) error

func DevelopmentSetup

func DevelopmentSetup(req *LoadConfigRequest)

func GetIocObjectUid

func GetIocObjectUid(obj Object) (name, version string)

func GinApiPathPrefix

func GinApiPathPrefix(pathPrefix string, obj Object) string

func GrpcControllerCount

func GrpcControllerCount() int

func LoadGinApi

func LoadGinApi(pathPrefix string, root gin.IRouter)

LoadGinApi 装载所有的gin app

func LoadGoRestfulApi

func LoadGoRestfulApi(pathPrefix string, root *restful.Container)

LoadHttpApp 装载所有的http app

func LoadGrpcController

func LoadGrpcController(server *grpc.Server)

LoadGrpcApp 加载所有的Grpc app

func ObjectUid

func ObjectUid(o *ObjectWrapper) string

注册的名字由来

func ValidateFileType

func ValidateFileType(ext string) error

Types

type GRPCControllerObject

type GRPCControllerObject interface {
	Object
	Registry(*grpc.Server)
}

--------------------------------------------- GRPCService GRPC服务的实例

type GetOption

type GetOption func(*option)

func WithVersion

func WithVersion(v string) GetOption

type GinApiObject

type GinApiObject interface {
	Object
	Registry(gin.IRouter)
}

------------------------------------gin-------------------------------------------

type GoRestfulApiObject

type GoRestfulApiObject interface {
	Object
	Registry(*restful.WebService)
}

------------------------------------go-restful-------------------------------------------

type InjectTag

type InjectTag struct {
	// 是否自动注入
	Autowire bool
	// 空间
	Namespace string
	// 注入对象的名称
	Name string
	// 注入对象的版本, 默认v1
	Version string
}

func NewInjectTag

func NewInjectTag() *InjectTag

func ParseInjectTag

func ParseInjectTag(v string) *InjectTag

autowire=true

type LoadConfigRequest

type LoadConfigRequest struct {
	// 环境变量配置
	ConfigEnv *configEnv
	// 文件配置方式
	ConfigFile *configFile
}

func NewLoadConfigRequest

func NewLoadConfigRequest() *LoadConfigRequest

type NamespaceStore

type NamespaceStore struct {
	// 空间名称
	Namespace string
	// 空间优先级
	Priority int
	// 空间对象列表
	Items []*ObjectWrapper
}

这个初始化,在store的时候,也就是在namespace.go中

func (*NamespaceStore) Autowire

func (i *NamespaceStore) Autowire() error

func (*NamespaceStore) Close

func (s *NamespaceStore) Close(ctx context.Context) error

销毁对象,此接口,暂未调用

func (*NamespaceStore) Count

func (s *NamespaceStore) Count() int

对象个数统计

func (*NamespaceStore) ForEach

func (s *NamespaceStore) ForEach(fn func(*ObjectWrapper))

这个是给加载配置文件用的.api路由也用了

func (*NamespaceStore) Get

func (s *NamespaceStore) Get(name string, opts ...GetOption) Object

func (*NamespaceStore) ImplementInterface

func (s *NamespaceStore) ImplementInterface(objType reflect.Type, opts ...GetOption) (objs []Object)

寻找实现了接口的对象

func (*NamespaceStore) Init

func (s *NamespaceStore) Init() error

注册的实例的初始化,都是在这做的

func (*NamespaceStore) Len

func (s *NamespaceStore) Len() int

Len 返回切片的长度,实现了 sort.Interface 接口

func (*NamespaceStore) Less

func (s *NamespaceStore) Less(i, j int) bool

Less 比较切片中两个元素的大小,实现了 sort.Interface 接口

func (*NamespaceStore) List

func (s *NamespaceStore) List() (uids []string)

func (*NamespaceStore) Load

func (s *NamespaceStore) Load(target any, opts ...GetOption) (Object, error)

根据对象对象加载对象

func (*NamespaceStore) LoadFromEnv

func (i *NamespaceStore) LoadFromEnv(prefix string) error

从环境变量中加载对象配置

func (*NamespaceStore) LoadFromFile

func (i *NamespaceStore) LoadFromFile(filename string) error

从环境配置文件中加载对象配置

func (*NamespaceStore) Registry

func (s *NamespaceStore) Registry(v Object)

func (*NamespaceStore) SetPriority

func (s *NamespaceStore) SetPriority(v int) *NamespaceStore

对象的优先级

func (*NamespaceStore) Sort

func (s *NamespaceStore) Sort()

-----按照priority排序注册

func (*NamespaceStore) Swap

func (s *NamespaceStore) Swap(i, j int)

Swap 交换切片中两个元素的位置,实现了 sort.Interface 接口

type Object

type Object interface {
	// 对象初始化
	Init() error
	// 对象的名称
	Name() string
	// 对象版本
	Version() string
	// 对象优先级
	Priority() int
	// 对象的销毁
	Close(ctx context.Context) error
	// 是否允许同名对象被替换, 默认不允许被替换.根据注册先后
	AllowOverwrite() bool
	// // 对象一些元数据, 对象的更多描述信息, 扩展使用
	Meta() ObjectMeta
}

Object 内部服务实例, 不需要暴露

type ObjectImpl

type ObjectImpl struct {
}

func (*ObjectImpl) AllowOverwrite

func (i *ObjectImpl) AllowOverwrite() bool

func (*ObjectImpl) Close

func (i *ObjectImpl) Close(ctx context.Context) error

func (*ObjectImpl) Hello1111

func (i *ObjectImpl) Hello1111() string

func (*ObjectImpl) Init

func (i *ObjectImpl) Init() error

func (*ObjectImpl) Meta

func (i *ObjectImpl) Meta() ObjectMeta

go-restful

func (*ObjectImpl) Name

func (i *ObjectImpl) Name() string

func (*ObjectImpl) Priority

func (i *ObjectImpl) Priority() int

func (*ObjectImpl) Version

func (i *ObjectImpl) Version() string

type ObjectMeta

type ObjectMeta struct {
	CustomPathPrefix string
	Extra            map[string]string
}

func DefaultObjectMeta

func DefaultObjectMeta() ObjectMeta

type ObjectWrapper

type ObjectWrapper struct {
	Name           string
	Version        string
	AllowOverwrite bool
	Priority       int
	Value          Object
}

func NewObjectWrapper

func NewObjectWrapper(obj Object) *ObjectWrapper

type StoreManage

type StoreManage interface {
	// 从环境变量中加载对象配置
	LoadFromEnv(prefix string) error
}

type StoreUser

type StoreUser interface {
	// 对象注册
	Registry(obj Object)
	// 对象获取
	Get(name string, opts ...GetOption) Object
	// 根据对象类型, 直接加载对象
	Load(obj any, opts ...GetOption) (Object, error) //这个接口有问题不完善,后续需要优化
	// 打印对象列表
	List() []string
	// 数量统计
	Count() int
	// 遍历注入的对象 这个是给加载配置文件用的
	ForEach(fn func(*ObjectWrapper))
}

func Api

func Api() StoreUser

用于托管RestApi对象的Ioc空间, 最后初始化

func Config

func Config() StoreUser

用于托管配置对象的Ioc空间, 最先初始化

func Controller

func Controller() StoreUser

用于托管控制器对象的Ioc空间, 配置完成后初始化

func Default

func Default() StoreUser

默认空间, 用于托管工具类, 在控制器之前进行初始化 store.Namespace(DEFAULT_NAMESPACE) 这个函数的返回,*NamespaceStore实现了 StoreUser 接口,所以可以作为 StoreUser 类型返回。

type Stroe

type Stroe interface {
	StoreUser
	StoreManage //暂时不需要环境变量加载配置
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL