ioc

package
v1.0.7 Latest Latest
Warning

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

Go to latest
Published: Nov 12, 2024 License: MIT Imports: 11 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 ConfigIocObject

func ConfigIocObject(req *LoadConfigRequest) error

func DevelopmentSetup

func DevelopmentSetup(req *LoadConfigRequest)

func GetIocObjectUid

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

func ObjectUid

func ObjectUid(o *ObjectWrapper) string

注册的名字由来

func ValidateFileType

func ValidateFileType(ext string) error

Types

type GetOption

type GetOption func(*option)

func WithVersion

func WithVersion(v string) GetOption

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 {
	// 默认加载后, 不允许重复加载, 这是为了避免多次初始化可能引发的问题
	ForceLoad bool
	// 环境变量配置
	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