SpringCore

package module
v1.0.5-rc1 Latest Latest
Warning

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

Go to latest
Published: Sep 4, 2020 License: Apache-2.0 Imports: 20 Imported by: 0

README

spring-core

Documentation

Index

Constants

View Source
const (
	ConditionOr   = ConditionOp(1) // 至少一个满足
	ConditionAnd  = ConditionOp(2) // 所有都要满足
	ConditionNone = ConditionOp(3) // 没有一个满足
)

Variables

This section is empty.

Functions

func CollectionMode

func CollectionMode(str string) bool

CollectionMode 返回是否是收集模式

func IsFuncBeanType

func IsFuncBeanType(fnType reflect.Type) bool

IsFuncBeanType 返回以函数形式注册 Bean 的函数是否合法。一个合法 的注册函数需要以下条件:入参可以有任意多个,支持一般形式和 Option 形式,返回值只能有一个或者两个,第一个返回值必须是 Bean 源,它可以是 结构体等值类型也可以是指针等引用类型,为值类型时内部会自动转换为引用类 型(获取可引用的地址),如果有第二个返回值那么它必须是 error 类型。

func IsRefType

func IsRefType(k reflect.Kind) bool

IsRefType 返回是否是引用类型

func IsValueType

func IsValueType(k reflect.Kind) bool

IsValueType 返回是否是值类型

func NewBeanCondition

func NewBeanCondition(selector BeanSelector) *beanCondition

NewBeanCondition beanCondition 的构造函数

func NewConditions

func NewConditions(op ConditionOp, cond ...Condition) *conditions

NewConditions conditions 的构造函数

func NewDefaultProperties

func NewDefaultProperties() *defaultProperties

NewDefaultProperties defaultProperties 的构造函数

func NewDefaultSpringContext

func NewDefaultSpringContext() *defaultSpringContext

NewDefaultSpringContext defaultSpringContext 的构造函数

func NewExpressionCondition

func NewExpressionCondition(expression string) *expressionCondition

NewExpressionCondition expressionCondition 的构造函数

func NewFunctionCondition

func NewFunctionCondition(fn ConditionFunc) *functionCondition

NewFunctionCondition functionCondition 的构造函数

func NewMissingBeanCondition

func NewMissingBeanCondition(selector BeanSelector) *missingBeanCondition

NewMissingBeanCondition missingBeanCondition 的构造函数

func NewMissingPropertyCondition

func NewMissingPropertyCondition(name string) *missingPropertyCondition

NewMissingPropertyCondition missingPropertyCondition 的构造函数

func NewNotCondition

func NewNotCondition(cond Condition) *notCondition

NewNotCondition notCondition 的构造函数

func NewOptionArg

func NewOptionArg(fn interface{}, tags ...string) *optionArg

NewOptionArg optionArg 的构造函数,tags 是 Option 函数的一般参数绑定

func NewPriorityProperties

func NewPriorityProperties(curr Properties, next Properties) *priorityProperties

NewPriorityProperties priorityProperties 的构造函数

func NewProfileCondition

func NewProfileCondition(profile string) *profileCondition

NewProfileCondition profileCondition 的构造函数

func NewPropertyCondition

func NewPropertyCondition(name string) *propertyCondition

NewPropertyCondition propertyCondition 的构造函数

func NewPropertyValueCondition

func NewPropertyValueCondition(name string, havingValue interface{},
	options ...PropertyValueConditionOption) *propertyValueCondition

NewPropertyValueCondition propertyValueCondition 的构造函数

func RegisterTypeConverter

func RegisterTypeConverter(fn interface{})

RegisterTypeConverter 注册类型转换器,函数原型 func(string)type

func TypeName

func TypeName(typOrPtr TypeOrPtr) string

TypeName 返回原始类型的全限定名,Go 语言允许不同的路径下存在相同的包,因此有全限定名 的需求,形如 "github.com/go-spring/spring-core/SpringCore.BeanDefinition"。

Types

type BeanDefinition

type BeanDefinition struct {
	// contains filtered or unexported fields
}

BeanDefinition 用于存储 Bean 的各种元数据

func FnToBeanDefinition

func FnToBeanDefinition(name string, fn interface{}, tags ...string) *BeanDefinition

FnToBeanDefinition 将构造函数转换为 BeanDefinition 对象

func MethodToBeanDefinition

func MethodToBeanDefinition(name string, selector BeanSelector, method string, tags ...string) *BeanDefinition

MethodToBeanDefinition 将成员方法转换为 BeanDefinition 对象

func ToBeanDefinition

func ToBeanDefinition(name string, i interface{}) *BeanDefinition

ToBeanDefinition 将 Bean 转换为 BeanDefinition 对象

func ValueToBeanDefinition

func ValueToBeanDefinition(name string, v reflect.Value) *BeanDefinition

ValueToBeanDefinition 将 Value 转换为 BeanDefinition 对象

func (*BeanDefinition) And

func (d *BeanDefinition) And() *BeanDefinition

And c=a&&b

func (*BeanDefinition) Bean

func (d *BeanDefinition) Bean() interface{}

Bean 返回 Bean 的源

func (*BeanDefinition) BeanId

func (d *BeanDefinition) BeanId() string

BeanId 返回 Bean 的唯一 ID

func (*BeanDefinition) ConditionNot

func (d *BeanDefinition) ConditionNot(cond Condition) *BeanDefinition

ConditionNot 为 Bean 设置一个取反的 Condition

func (*BeanDefinition) ConditionOn

func (d *BeanDefinition) ConditionOn(cond Condition) *BeanDefinition

ConditionOn 为 Bean 设置一个 Condition

func (*BeanDefinition) ConditionOnBean

func (d *BeanDefinition) ConditionOnBean(selector BeanSelector) *BeanDefinition

ConditionOnBean 为 Bean 设置一个 BeanCondition

func (*BeanDefinition) ConditionOnExpression

func (d *BeanDefinition) ConditionOnExpression(expression string) *BeanDefinition

ConditionOnExpression 为 Bean 设置一个 ExpressionCondition

func (*BeanDefinition) ConditionOnMatches

func (d *BeanDefinition) ConditionOnMatches(fn ConditionFunc) *BeanDefinition

ConditionOnMatches 为 Bean 设置一个 FunctionCondition

func (*BeanDefinition) ConditionOnMissingBean

func (d *BeanDefinition) ConditionOnMissingBean(selector BeanSelector) *BeanDefinition

ConditionOnMissingBean 为 Bean 设置一个 MissingBeanCondition

func (*BeanDefinition) ConditionOnMissingProperty

func (d *BeanDefinition) ConditionOnMissingProperty(name string) *BeanDefinition

ConditionOnMissingProperty 为 Bean 设置一个 MissingPropertyCondition

func (*BeanDefinition) ConditionOnOptionalPropertyValue

func (d *BeanDefinition) ConditionOnOptionalPropertyValue(name string, havingValue interface{}) *BeanDefinition

ConditionOnOptionalPropertyValue 为 Bean 设置一个 PropertyValueCondition,当属性值不存在时默认条件成立

func (*BeanDefinition) ConditionOnProfile

func (d *BeanDefinition) ConditionOnProfile(profile string) *BeanDefinition

ConditionOnProfile 为 Bean 设置一个 ProfileCondition

func (*BeanDefinition) ConditionOnProperty

func (d *BeanDefinition) ConditionOnProperty(name string) *BeanDefinition

ConditionOnProperty 为 Bean 设置一个 PropertyCondition

func (*BeanDefinition) ConditionOnPropertyValue

func (d *BeanDefinition) ConditionOnPropertyValue(name string, havingValue interface{},
	options ...PropertyValueConditionOption) *BeanDefinition

ConditionOnPropertyValue 为 Bean 设置一个 PropertyValueCondition

func (*BeanDefinition) DependsOn

func (d *BeanDefinition) DependsOn(selectors ...BeanSelector) *BeanDefinition

DependsOn 设置 Bean 的间接依赖项

func (*BeanDefinition) Description

func (d *BeanDefinition) Description() string

Description 返回 Bean 的详细描述

func (*BeanDefinition) Destroy

func (d *BeanDefinition) Destroy(fn interface{}, tags ...string) *BeanDefinition

Destroy 设置 Bean 的销毁函数,tags 是销毁函数的一般参数绑定

func (*BeanDefinition) Export

func (d *BeanDefinition) Export(exports ...TypeOrPtr) *BeanDefinition

Export 显式指定 Bean 的导出接口

func (*BeanDefinition) FileLine

func (d *BeanDefinition) FileLine() string

FileLine 返回 Bean 的注册点

func (*BeanDefinition) Init

func (d *BeanDefinition) Init(fn interface{}, tags ...string) *BeanDefinition

Init 设置 Bean 的初始化函数,tags 是初始化函数的一般参数绑定

func (*BeanDefinition) Match

func (d *BeanDefinition) Match(typeName string, beanName string) bool

Match 测试 Bean 的类型全限定名和 Bean 的名称是否都匹配

func (*BeanDefinition) Name

func (d *BeanDefinition) Name() string

Name 返回 Bean 的名称

func (*BeanDefinition) Options

func (d *BeanDefinition) Options(options ...*optionArg) *BeanDefinition

Options 设置 Option 模式函数的 Option 参数绑定

func (*BeanDefinition) Or

func (d *BeanDefinition) Or() *BeanDefinition

Or c=a||b

func (*BeanDefinition) Primary

func (d *BeanDefinition) Primary(primary bool) *BeanDefinition

Primary 设置 Bean 为主版本

func (*BeanDefinition) Type

func (d *BeanDefinition) Type() reflect.Type

Type 返回 Bean 的类型

func (*BeanDefinition) TypeName

func (d *BeanDefinition) TypeName() string

TypeName 返回 Bean 的原始类型的全限定名

func (*BeanDefinition) Value

func (d *BeanDefinition) Value() reflect.Value

Value 返回 Bean 的值

type BeanSelector

type BeanSelector interface{}

BeanSelector Bean 选择器,可以是 BeanId 字符串,可以是 reflect.Type 对象或者形如 (*error)(nil) 的对象指针,还可以是 *BeanDefinition 对象。

type CollectionTag

type CollectionTag struct {
	Items    []SingletonTag
	Nullable bool
}

CollectionTag 收集模式注入 Tag 对应的分解形式

func ParseCollectionTag

func ParseCollectionTag(str string) (tag CollectionTag)

ParseCollectionTag 解析收集模式注入 Tag 字符串

func (CollectionTag) String

func (tag CollectionTag) String() (str string)

type Condition

type Condition interface {
	// Matches 成功返回 true,失败返回 false
	Matches(ctx SpringContext) bool
}

Condition 定义一个判断条件

type ConditionFunc

type ConditionFunc func(ctx SpringContext) bool

ConditionFunc 定义 Condition 接口 Matches 方法的类型

type ConditionOp

type ConditionOp int

ConditionOp conditionNode 的计算方式

type Conditional

type Conditional struct {
	// contains filtered or unexported fields
}

Conditional Condition 计算式

func ConditionOnBean

func ConditionOnBean(selector BeanSelector) *Conditional

ConditionOnBean 返回设置了 beanCondition 的 Conditional 对象

func ConditionOnExpression

func ConditionOnExpression(expression string) *Conditional

ConditionOnExpression 返回设置了 expressionCondition 的 Conditional 对象

func ConditionOnMatches

func ConditionOnMatches(fn ConditionFunc) *Conditional

ConditionOnMatches 返回设置了 functionCondition 的 Conditional 对象

func ConditionOnMissingBean

func ConditionOnMissingBean(selector BeanSelector) *Conditional

ConditionOnMissingBean 返回设置了 missingBeanCondition 的 Conditional 对象

func ConditionOnMissingProperty

func ConditionOnMissingProperty(name string) *Conditional

ConditionOnMissingProperty 返回设置了 missingPropertyCondition 的 Conditional 对象

func ConditionOnOptionalPropertyValue

func ConditionOnOptionalPropertyValue(name string, havingValue interface{}) *Conditional

ConditionOnOptionalPropertyValue 返回属性值不存在时默认条件成立的 Conditional 对象

func ConditionOnProfile

func ConditionOnProfile(profile string) *Conditional

ConditionOnProfile 返回设置了 profileCondition 的 Conditional 对象

func ConditionOnProperty

func ConditionOnProperty(name string) *Conditional

ConditionOnProperty 返回设置了 propertyCondition 的 Conditional 对象

func ConditionOnPropertyValue

func ConditionOnPropertyValue(name string, havingValue interface{},
	options ...PropertyValueConditionOption) *Conditional

ConditionOnPropertyValue 返回设置了 propertyValueCondition 的 Conditional 对象

func NewConditional

func NewConditional() *Conditional

NewConditional Conditional 的构造函数

func OnBean deprecated

func OnBean(selector BeanSelector) *Conditional

Deprecated: Use "ConditionOnBean" instead.

func OnExpression deprecated

func OnExpression(expression string) *Conditional

Deprecated: Use "ConditionOnExpression" instead.

func OnMatches deprecated

func OnMatches(fn ConditionFunc) *Conditional

Deprecated: Use "ConditionOnMatches" instead.

func OnMissingBean deprecated

func OnMissingBean(selector BeanSelector) *Conditional

Deprecated: Use "ConditionOnMissingBean" instead.

func OnMissingProperty deprecated

func OnMissingProperty(name string) *Conditional

Deprecated: Use "ConditionOnMissingProperty" instead.

func OnProfile deprecated

func OnProfile(profile string) *Conditional

Deprecated: Use "ConditionOnProfile" instead.

func OnProperty deprecated

func OnProperty(name string) *Conditional

Deprecated: Use "ConditionOnProperty" instead.

func OnPropertyValue deprecated

func OnPropertyValue(name string, havingValue interface{}) *Conditional

Deprecated: Use "ConditionOnPropertyValue" instead.

func (*Conditional) And

func (c *Conditional) And() *Conditional

And c=a&&b

func (*Conditional) Empty

func (c *Conditional) Empty() bool

Empty 返回表达式是否为空

func (*Conditional) Matches

func (c *Conditional) Matches(ctx SpringContext) bool

Matches 成功返回 true,失败返回 false

func (*Conditional) OnBean

func (c *Conditional) OnBean(selector BeanSelector) *Conditional

OnBean 设置一个 beanCondition

func (*Conditional) OnCondition

func (c *Conditional) OnCondition(cond Condition) *Conditional

OnCondition 设置一个 Condition

func (*Conditional) OnConditionNot

func (c *Conditional) OnConditionNot(cond Condition) *Conditional

OnConditionNot 设置一个取反的 Condition

func (*Conditional) OnExpression

func (c *Conditional) OnExpression(expression string) *Conditional

OnExpression 设置一个 expressionCondition

func (*Conditional) OnMatches

func (c *Conditional) OnMatches(fn ConditionFunc) *Conditional

OnMatches 设置一个 functionCondition

func (*Conditional) OnMissingBean

func (c *Conditional) OnMissingBean(selector BeanSelector) *Conditional

OnMissingBean 设置一个 missingBeanCondition

func (*Conditional) OnMissingProperty

func (c *Conditional) OnMissingProperty(name string) *Conditional

OnMissingProperty 设置一个 missingPropertyCondition

func (*Conditional) OnOptionalPropertyValue

func (c *Conditional) OnOptionalPropertyValue(name string, havingValue interface{}) *Conditional

OnOptionalPropertyValue 设置一个 propertyValueCondition,当属性值不存在时默认条件成立

func (*Conditional) OnProfile

func (c *Conditional) OnProfile(profile string) *Conditional

OnProfile 设置一个 profileCondition

func (*Conditional) OnProperty

func (c *Conditional) OnProperty(name string) *Conditional

OnProperty 设置一个 propertyCondition

func (*Conditional) OnPropertyValue

func (c *Conditional) OnPropertyValue(name string, havingValue interface{},
	options ...PropertyValueConditionOption) *Conditional

OnPropertyValue 设置一个 propertyValueCondition

func (*Conditional) Or

func (c *Conditional) Or() *Conditional

Or c=a||b

type Configer

type Configer struct {
	// contains filtered or unexported fields
}

Configer 配置函数,不立即执行

func (*Configer) After

func (c *Configer) After(configers ...string) *Configer

After 设置当前 Configer 在某些 Configer 之后执行

func (*Configer) And

func (c *Configer) And() *Configer

And c=a&&b

func (*Configer) Before

func (c *Configer) Before(configers ...string) *Configer

Before 设置当前 Configer 在某些 Configer 之前执行

func (*Configer) ConditionNot

func (c *Configer) ConditionNot(cond Condition) *Configer

ConditionNot 为 Configer 设置一个取反的 Condition

func (*Configer) ConditionOn

func (c *Configer) ConditionOn(cond Condition) *Configer

ConditionOn 为 Configer 设置一个 Condition

func (*Configer) ConditionOnBean

func (c *Configer) ConditionOnBean(selector BeanSelector) *Configer

ConditionOnBean 为 Configer 设置一个 BeanCondition

func (*Configer) ConditionOnExpression

func (c *Configer) ConditionOnExpression(expression string) *Configer

ConditionOnExpression 为 Configer 设置一个 ExpressionCondition

func (*Configer) ConditionOnMatches

func (c *Configer) ConditionOnMatches(fn ConditionFunc) *Configer

ConditionOnMatches 为 Configer 设置一个 FunctionCondition

func (*Configer) ConditionOnMissingBean

func (c *Configer) ConditionOnMissingBean(selector BeanSelector) *Configer

ConditionOnMissingBean 为 Configer 设置一个 MissingBeanCondition

func (*Configer) ConditionOnMissingProperty

func (c *Configer) ConditionOnMissingProperty(name string) *Configer

ConditionOnMissingProperty 为 Configer 设置一个 MissingPropertyCondition

func (*Configer) ConditionOnOptionalPropertyValue

func (c *Configer) ConditionOnOptionalPropertyValue(name string, havingValue interface{}) *Configer

ConditionOnOptionalPropertyValue 为 Configer 设置一个 PropertyValueCondition,当属性值不存在时默认条件成立

func (*Configer) ConditionOnProfile

func (c *Configer) ConditionOnProfile(profile string) *Configer

ConditionOnProfile 为 Configer 设置一个 ProfileCondition

func (*Configer) ConditionOnProperty

func (c *Configer) ConditionOnProperty(name string) *Configer

ConditionOnProperty 为 Configer 设置一个 PropertyCondition

func (*Configer) ConditionOnPropertyValue

func (c *Configer) ConditionOnPropertyValue(name string, havingValue interface{},
	options ...PropertyValueConditionOption) *Configer

ConditionOnPropertyValue 为 Configer 设置一个 PropertyValueCondition

func (*Configer) Options

func (c *Configer) Options(options ...*optionArg) *Configer

Options 设置 Option 模式函数的参数绑定

func (*Configer) Or

func (c *Configer) Or() *Configer

Or c=a||b

type GoFunc

type GoFunc func()

type Properties

type Properties interface {
	// LoadProperties 加载属性配置文件,
	// 支持 properties、yaml 和 toml 三种文件格式。
	LoadProperties(filename string)

	// ReadProperties 读取属性配置文件,
	// 支持 properties、yaml 和 toml 三种文件格式。
	ReadProperties(reader io.Reader, configType string)

	// GetProperty 返回 keys 中第一个存在的属性值,属性名称统一转成小写。
	GetProperty(keys ...string) interface{}

	// GetBoolProperty 返回 keys 中第一个存在的布尔型属性值,属性名称统一转成小写。
	GetBoolProperty(keys ...string) bool

	// GetIntProperty 返回 keys 中第一个存在的有符号整型属性值,属性名称统一转成小写。
	GetIntProperty(keys ...string) int64

	// GetUintProperty 返回 keys 中第一个存在的无符号整型属性值,属性名称统一转成小写。
	GetUintProperty(keys ...string) uint64

	// GetFloatProperty 返回 keys 中第一个存在的浮点型属性值,属性名称统一转成小写。
	GetFloatProperty(keys ...string) float64

	// GetStringProperty 返回 keys 中第一个存在的字符串型属性值,属性名称统一转成小写。
	GetStringProperty(keys ...string) string

	// GetDurationProperty 返回 keys 中第一个存在的 Duration 类型属性值,属性名称统一转成小写。
	GetDurationProperty(keys ...string) time.Duration

	// GetTimeProperty 返回 keys 中第一个存在的 Time 类型的属性值,属性名称统一转成小写。
	GetTimeProperty(keys ...string) time.Time

	// GetDefaultProperty 返回属性值,如果没有找到则使用指定的默认值,属性名称统一转成小写。
	GetDefaultProperty(key string, def interface{}) (interface{}, bool)

	// SetProperty 设置属性值,属性名称统一转成小写。
	SetProperty(key string, value interface{})

	// GetPrefixProperties 返回指定前缀的属性值集合,属性名称统一转成小写。
	GetPrefixProperties(prefix string) map[string]interface{}

	// GetGroupedProperties 返回指定前缀的属性值集合并进行分组,属性名称统一转成小写。
	GetGroupedProperties(prefix string) map[string]map[string]interface{}

	// GetProperties 返回所有的属性值,属性名称统一转成小写。
	GetProperties() map[string]interface{}

	// BindProperty 根据类型获取属性值,属性名称统一转成小写。
	BindProperty(key string, i interface{})

	// BindPropertyIf 根据类型获取属性值,属性名称统一转成小写。
	BindPropertyIf(key string, i interface{}, allAccess bool)
}

Properties 定义属性值接口

type PropertyValueConditionOption

type PropertyValueConditionOption func(*propertyValueCondition)

func MatchIfMissing

func MatchIfMissing(matchIfMissing bool) PropertyValueConditionOption

MatchIfMissing 当属性值不存在时是否匹配判断条件

type Runner

type Runner struct {
	// contains filtered or unexported fields
}

Runner 立即执行器

func (*Runner) On

func (r *Runner) On(cond Condition) error

On Condition 判断结果为 true 时执行器立即执行

func (*Runner) Options

func (r *Runner) Options(options ...*optionArg) *Runner

Options 设置 Option 模式函数的参数绑定

func (*Runner) When

func (r *Runner) When(ok bool) error

When 参数为 true 时执行器立即执行

type SingletonTag

type SingletonTag struct {
	TypeName string
	BeanName string
	Nullable bool
}

SingletonTag 单例模式注入 Tag 对应的分解形式

func ParseSingletonTag

func ParseSingletonTag(str string) (tag SingletonTag)

ParseSingletonTag 解析单例模式注入 Tag 字符串

func ToSingletonTag

func ToSingletonTag(selector BeanSelector) SingletonTag

ToSingletonTag 将 Bean 选择器转换为 SingletonTag 形式。注意该函数仅用 于精确匹配的场景下,也就是说通过类型选择的时候类型必须是具体的,而不能是接口。

func (SingletonTag) String

func (tag SingletonTag) String() (str string)

type SpringContext

type SpringContext interface {

	// 属性值列表接口
	Properties

	// Context 返回上下文接口
	Context() context.Context

	// GetProfile 返回运行环境
	GetProfile() string

	// SetProfile 设置运行环境
	SetProfile(profile string)

	// AllAccess 返回是否允许访问私有字段
	AllAccess() bool

	// SetAllAccess 设置是否允许访问私有字段
	SetAllAccess(allAccess bool)

	// RegisterBean 注册单例 Bean,不指定名称,重复注册会 panic。
	RegisterBean(bean interface{}) *BeanDefinition

	// RegisterNameBean 注册单例 Bean,需指定名称,重复注册会 panic。
	RegisterNameBean(name string, bean interface{}) *BeanDefinition

	// RegisterBeanFn 注册单例构造函数 Bean,不指定名称,重复注册会 panic。
	RegisterBeanFn(fn interface{}, tags ...string) *BeanDefinition

	// RegisterNameBeanFn 注册单例构造函数 Bean,需指定名称,重复注册会 panic。
	RegisterNameBeanFn(name string, fn interface{}, tags ...string) *BeanDefinition

	// RegisterMethodBean 注册成员方法单例 Bean,不指定名称,重复注册会 panic。
	// 必须给定方法名而不能通过遍历方法列表比较方法类型的方式获得函数名,因为不同方法的类型可能相同。
	// 而且 interface 的方法类型不带 receiver 而成员方法的类型带有 receiver,两者类型也不好匹配。
	RegisterMethodBean(selector BeanSelector, method string, tags ...string) *BeanDefinition

	// RegisterNameMethodBean 注册成员方法单例 Bean,需指定名称,重复注册会 panic。
	// 必须给定方法名而不能通过遍历方法列表比较方法类型的方式获得函数名,因为不同方法的类型可能相同。
	// 而且 interface 的方法类型不带 receiver 而成员方法的类型带有 receiver,两者类型也不好匹配。
	RegisterNameMethodBean(name string, selector BeanSelector, method string, tags ...string) *BeanDefinition

	// @Incubate 注册成员方法单例 Bean,不指定名称,重复注册会 panic。
	// method 形如 ServerInterface.Consumer (接口) 或 (*Server).Consumer (类型)。
	RegisterMethodBeanFn(method interface{}, tags ...string) *BeanDefinition

	// @Incubate 注册成员方法单例 Bean,需指定名称,重复注册会 panic。
	// method 形如 ServerInterface.Consumer (接口) 或 (*Server).Consumer (类型)。
	RegisterNameMethodBeanFn(name string, method interface{}, tags ...string) *BeanDefinition

	// AutoWireBeans 对所有 Bean 进行依赖注入和属性绑定
	AutoWireBeans()

	// WireBean 对外部的 Bean 进行依赖注入和属性绑定
	WireBean(i interface{})

	// GetBean 获取单例 Bean,若多于 1 个则 panic;找到返回 true 否则返回 false。
	// 它和 FindBean 的区别是它在调用后能够保证返回的 Bean 已经完成了注入和绑定过程。
	GetBean(i interface{}, selector ...BeanSelector) bool

	// FindBean 查询单例 Bean,若多于 1 个则 panic;找到返回 true 否则返回 false。
	// 它和 GetBean 的区别是它在调用后不能保证返回的 Bean 已经完成了注入和绑定过程。
	FindBean(selector BeanSelector) (*BeanDefinition, bool)

	// CollectBeans 收集数组或指针定义的所有符合条件的 Bean,收集到返回 true,否则返
	// 回 false。该函数有两种模式:自动模式和指定模式。自动模式是指 selectors 参数为空,
	// 这时候不仅会收集符合条件的单例 Bean,还会收集符合条件的数组 Bean (是指数组的元素
	// 符合条件,然后把数组元素拆开一个个放到收集结果里面)。指定模式是指 selectors 参数
	// 不为空,这时候只会收集单例 Bean,而且要求这些单例 Bean 不仅需要满足收集条件,而且
	// 必须满足 selector 条件。另外,自动模式下不对收集结果进行排序,指定模式下根据
	// selectors 列表的顺序对收集结果进行排序。
	CollectBeans(i interface{}, selectors ...BeanSelector) bool

	// GetBeanDefinitions 获取所有 Bean 的定义,不能保证解析和注入,请谨慎使用该函数!
	GetBeanDefinitions() []*BeanDefinition

	// Close 关闭容器上下文,用于通知 Bean 销毁等。
	// 该函数可以确保 Bean 的销毁顺序和注入顺序相反。
	Close(beforeDestroy ...func())

	// Run 根据条件判断是否立即执行一个一次性的任务
	Run(fn interface{}, tags ...string) *Runner

	// RunNow 立即执行一个一次性的任务
	RunNow(fn interface{}, tags ...string) error

	// Config 注册一个配置函数
	Config(fn interface{}, tags ...string) *Configer

	// ConfigWithName 注册一个配置函数,名称的作用是对 Config 进行排重和排顺序。
	ConfigWithName(name string, fn interface{}, tags ...string) *Configer

	// SafeGoroutine 安全地启动一个 goroutine
	SafeGoroutine(fn GoFunc)
}

SpringContext 定义了 IoC 容器接口。

它的工作过程可以分为三个大的阶段:注册 Bean 列表、加载属性配置 文件、自动绑定。其中自动绑定又分为两个小阶段:解析(决议)和绑定。

一条需要谨记的注册规则是: AutoWireBeans 调用后就不能再注册新 的 Bean 了,这样做是因为实现起来更简单而且性能更高。

type TypeOrPtr

type TypeOrPtr interface{}

TypeOrPtr 可以是 reflect.Type 对象或者形如 (*error)(nil) 的对象指针。

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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