SpringBoot

package
v1.0.0-rc Latest Latest
Warning

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

Go to latest
Published: Jan 4, 2020 License: Apache-2.0 Imports: 11 Imported by: 26

README

spring-boot

开箱即用的 Go-Spring 程序启动框架。

import (
	"fmt"
	"os"
	"testing"
	"time"

	"github.com/go-spring/go-spring/spring-boot"
	"github.com/go-spring/go-spring/spring-core"
)

func init() {
	SpringBoot.RegisterBean(new(MyRunner))
	SpringBoot.RegisterBeanFn(NewMyModule, "${message}")
}

func TestRunApplication(t *testing.T) {
	os.Setenv(SpringBoot.SPRING_PROFILE, "test")
	SpringBoot.RunApplication("testdata/config/", "k8s:testdata/config/config-map.yaml")
}

////////////////// MyRunner ///////////////////

type MyRunner struct {
	Ctx SpringCore.SpringContext `autowire:""`
}

func (r *MyRunner) Run() {
	fmt.Println("get all properties:")
	for k, v := range r.Ctx.GetAllProperties() {
		fmt.Println(k + "=" + fmt.Sprint(v))
	}
}

////////////////// MyModule ///////////////////

type MyModule struct {
	msg string
}

func NewMyModule(msg string) *MyModule {
	return &MyModule{
		msg: msg,
	}
}

func (m *MyModule) OnStartApplication(ctx SpringBoot.ApplicationContext) {
	fmt.Println("MyModule start")

	var e *MyModule
	ctx.GetBean(&e)
	fmt.Printf("event: %+v\n", e)

	ctx.SafeGoroutine(Process)
}

func (m *MyModule) OnStopApplication(ctx SpringBoot.ApplicationContext) {
	fmt.Println("MyModule stop")
}

func Process() {

	defer fmt.Println("go stop")
	fmt.Println("go start")

	var m *MyModule
	SpringBoot.GetBean(&m)
	fmt.Printf("process: %+v\n", m)

	time.Sleep(200 * time.Millisecond)

	SpringBoot.Exit()
}

Documentation

Overview

开箱即用的 Go-Spring 程序启动框架。

Index

Constants

View Source
const (
	SpringProfile = "spring.profile" // 运行环境
)

Variables

View Source
var DefaultWebMapping = NewWebMapping()

DefaultWebMapping 默认的 Web 路由映射表

Functions

func BindProperty

func BindProperty(name string, i interface{})

BindProperty 根据类型获取属性值,属性名称统一转成小写。

func CollectBeans

func CollectBeans(i interface{}) bool

CollectBeans 收集数组或指针定义的所有符合条件的 Bean 对象,收集到返回 true,否则返回 false。

func Exit

func Exit()

Exit 退出 SpringBoot 应用

func FindBeanByName

func FindBeanByName(beanId string) (*SpringCore.BeanDefinition, bool)

FindBeanByName 根据名称和类型获取单例 Bean,若多于 1 个则 panic;找到返回 true 否则返回 false。

func GetAllBeanDefinitions

func GetAllBeanDefinitions() []*SpringCore.BeanDefinition

GetAllBeanDefinitions 获取所有 Bean 的定义,一般仅供调试使用。

func GetAllProperties

func GetAllProperties() map[string]interface{}

GetAllProperties 返回所有的属性值,属性名称统一转成小写。

func GetBean

func GetBean(i interface{}) bool

GetBean 根据类型获取单例 Bean,若多于 1 个则 panic;找到返回 true 否则返回 false。

func GetBeanByName

func GetBeanByName(beanId string, i interface{}) bool

GetBeanByName 根据名称和类型获取单例 Bean,若多于 1 个则 panic;找到返回 true 否则返回 false。

func GetBoolProperty

func GetBoolProperty(name string) bool

GetBoolProperty 返回布尔型属性值,属性名称统一转成小写。

func GetDefaultProperty

func GetDefaultProperty(name string, defaultValue interface{}) (interface{}, bool)

GetDefaultProperty 返回属性值,如果没有找到则使用指定的默认值,属性名称统一转成小写。

func GetFloatProperty

func GetFloatProperty(name string) float64

GetFloatProperty 返回浮点型属性值,属性名称统一转成小写。

func GetIntProperty

func GetIntProperty(name string) int64

GetIntProperty 返回有符号整型属性值,属性名称统一转成小写。

func GetPrefixProperties

func GetPrefixProperties(prefix string) map[string]interface{}

GetPrefixProperties 返回指定前缀的属性值集合,属性名称统一转成小写。

func GetProfile

func GetProfile() string

GetProfile 返回运行环境

func GetProperty

func GetProperty(name string) interface{}

GetProperty 返回属性值,属性名称统一转成小写。

func GetStringProperty

func GetStringProperty(name string) string

GetStringProperty 返回字符串型属性值,属性名称统一转成小写。

func GetUintProperty

func GetUintProperty(name string) uint64

GetUintProperty 返回无符号整型属性值,属性名称统一转成小写。

func NewConfigMapPropertySource

func NewConfigMapPropertySource(filename string) *configMapPropertySource

NewConfigMapPropertySource configMapPropertySource 的构造函数

func NewDefaultPropertySource

func NewDefaultPropertySource(fileLocation string) *defaultPropertySource

NewDefaultPropertySource defaultPropertySource 的构造函数

func RegisterBean

func RegisterBean(bean interface{}) *SpringCore.BeanDefinition

RegisterBean 注册单例 Bean,不指定名称,重复注册会 panic。

func RegisterBeanFn

func RegisterBeanFn(fn interface{}, tags ...string) *SpringCore.BeanDefinition

RegisterBeanFn 注册单例构造函数 Bean,不指定名称,重复注册会 panic。

func RegisterMethodBean

func RegisterMethodBean(parent *SpringCore.BeanDefinition, method string, tags ...string) *SpringCore.BeanDefinition

RegisterMethodBean 注册成员方法单例 Bean,不指定名称,重复注册会 panic。

func RegisterNameBean

func RegisterNameBean(name string, bean interface{}) *SpringCore.BeanDefinition

RegisterNameBean 注册单例 Bean,需指定名称,重复注册会 panic。

func RegisterNameBeanFn

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

RegisterNameBeanFn 注册单例构造函数 Bean,需指定名称,重复注册会 panic。

func RegisterNameMethodBean

func RegisterNameMethodBean(name string, parent *SpringCore.BeanDefinition, method string, tags ...string) *SpringCore.BeanDefinition

RegisterNameMethodBean 注册成员方法单例 Bean,需指定名称,重复注册会 panic。

func RunApplication

func RunApplication(configLocation ...string)

RunApplication 快速启动 SpringBoot 应用

func SetProfile

func SetProfile(profile string)

SetProfile 设置运行环境

func SetProperty

func SetProperty(name string, value interface{})

SetProperty 设置属性值,属性名称统一转成小写。

func WireBean

func WireBean(bean interface{})

WireBean 绑定外部的 Bean 源

Types

type ApplicationContext

type ApplicationContext interface {
	SpringCore.SpringContext

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

	// Wait 等待所有 goroutine 退出
	Wait()
}

ApplicationContext Application 上下文

type ApplicationEvent

type ApplicationEvent interface {
	OnStartApplication(ctx ApplicationContext) // 应用启动的事件
	OnStopApplication(ctx ApplicationContext)  // 应用停止的事件
}

ApplicationEvent 应用运行过程中的事件

type CommandLineRunner

type CommandLineRunner interface {
	Run()
}

CommandLineRunner 命令行启动器接口

type GoFunc

type GoFunc func()

type Mapping

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

Mapping 封装 Web 路由映射

func DeleteMapping

func DeleteMapping(path string, fn SpringWeb.Handler) *Mapping

DeleteMapping

func GetMapping

func GetMapping(path string, fn SpringWeb.Handler) *Mapping

GetMapping

func NewMapping

func NewMapping(mapper *SpringWeb.Mapper) *Mapping

NewMapping Mapping 的构造函数

func PatchMapping

func PatchMapping(path string, fn SpringWeb.Handler) *Mapping

PatchMapping

func PostMapping

func PostMapping(path string, fn SpringWeb.Handler) *Mapping

PostMapping

func PutMapping

func PutMapping(path string, fn SpringWeb.Handler) *Mapping

PutMapping

func RequestMapping

func RequestMapping(method string, path string, fn SpringWeb.Handler) *Mapping

RequestMapping

func (*Mapping) And

func (m *Mapping) And() *Mapping

And c=a&&b

func (*Mapping) ConditionOn

func (m *Mapping) ConditionOn(cond SpringCore.Condition) *Mapping

ConditionOn 设置一个 Condition

func (*Mapping) ConditionOnBean

func (m *Mapping) ConditionOnBean(beanId string) *Mapping

ConditionOnBean 设置一个 BeanCondition

func (*Mapping) ConditionOnExpression

func (m *Mapping) ConditionOnExpression(expression string) *Mapping

ConditionOnExpression 设置一个 ExpressionCondition

func (*Mapping) ConditionOnMatches

func (m *Mapping) ConditionOnMatches(fn SpringCore.ConditionFunc) *Mapping

ConditionOnMatches 设置一个 FunctionCondition

func (*Mapping) ConditionOnMissingBean

func (m *Mapping) ConditionOnMissingBean(beanId string) *Mapping

ConditionOnMissingBean 设置一个 MissingBeanCondition

func (*Mapping) ConditionOnMissingProperty

func (m *Mapping) ConditionOnMissingProperty(name string) *Mapping

ConditionOnMissingProperty 设置一个 MissingPropertyCondition

func (*Mapping) ConditionOnProfile

func (m *Mapping) ConditionOnProfile(profile string) *Mapping

ConditionOnProfile 设置一个 ProfileCondition

func (*Mapping) ConditionOnProperty

func (m *Mapping) ConditionOnProperty(name string) *Mapping

ConditionOnProperty 设置一个 PropertyCondition

func (*Mapping) ConditionOnPropertyValue

func (m *Mapping) ConditionOnPropertyValue(name string, havingValue interface{}) *Mapping

ConditionOnPropertyValue 设置一个 PropertyValueCondition

func (*Mapping) Doc

func (m *Mapping) Doc() string

Doc 返回接口文档

func (*Mapping) FilterNames

func (m *Mapping) FilterNames() []string

FilterNames 返回过滤器列表

func (*Mapping) Filters

func (m *Mapping) Filters() []SpringWeb.Filter

Filters 返回 Mapper 的过滤器列表

func (*Mapping) Handler

func (m *Mapping) Handler() SpringWeb.Handler

Handler 返回 Mapper 的处理函数

func (*Mapping) Key

func (m *Mapping) Key() string

Key 返回 Mapper 的标识符

func (*Mapping) Matches

func (m *Mapping) Matches(ctx SpringCore.SpringContext) bool

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

func (*Mapping) Method

func (m *Mapping) Method() string

Method 返回 Mapper 的方法

func (*Mapping) Or

func (m *Mapping) Or() *Mapping

Or c=a||b

func (*Mapping) Path

func (m *Mapping) Path() string

Path 返回 Mapper 的路径

func (*Mapping) Port

func (m *Mapping) Port() int

Port 返回路由的端口

func (*Mapping) SetDoc

func (m *Mapping) SetDoc(doc string) *Mapping

SetDoc 设置接口文档

func (*Mapping) SetFilterNames

func (m *Mapping) SetFilterNames(filterNames ...string) *Mapping

SetFilterNames 设置过滤器列表

func (*Mapping) SetFilters

func (m *Mapping) SetFilters(filters ...SpringWeb.Filter) *Mapping

Filters 设置 Mapper 的过滤器列表

func (*Mapping) SetPort

func (m *Mapping) SetPort(port int) *Mapping

SetPort 设置路由的端口

type Router

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

Router 路由分组

func NewRouter

func NewRouter(mapping *WebMapping, basePath string) *Router

NewRouter Router 的构造函数

func Route

func Route(basePath string) *Router

Route 返回和 Mapping 绑定的路由分组

func (*Router) And

func (r *Router) And() *Router

And c=a&&b

func (*Router) ConditionOn

func (r *Router) ConditionOn(cond SpringCore.Condition) *Router

ConditionOn 设置一个 Condition

func (*Router) ConditionOnBean

func (r *Router) ConditionOnBean(beanId string) *Router

ConditionOnBean 设置一个 BeanCondition

func (*Router) ConditionOnExpression

func (r *Router) ConditionOnExpression(expression string) *Router

ConditionOnExpression 设置一个 ExpressionCondition

func (*Router) ConditionOnMatches

func (r *Router) ConditionOnMatches(fn SpringCore.ConditionFunc) *Router

ConditionOnMatches 设置一个 FunctionCondition

func (*Router) ConditionOnMissingBean

func (r *Router) ConditionOnMissingBean(beanId string) *Router

ConditionOnMissingBean 设置一个 MissingBeanCondition

func (*Router) ConditionOnMissingProperty

func (r *Router) ConditionOnMissingProperty(name string) *Router

ConditionOnMissingProperty 设置一个 MissingPropertyCondition

func (*Router) ConditionOnProfile

func (r *Router) ConditionOnProfile(profile string) *Router

ConditionOnProfile 设置一个 ProfileCondition

func (*Router) ConditionOnProperty

func (r *Router) ConditionOnProperty(name string) *Router

ConditionOnProperty 设置一个 PropertyCondition

func (*Router) ConditionOnPropertyValue

func (r *Router) ConditionOnPropertyValue(name string, havingValue interface{}) *Router

ConditionOnPropertyValue 设置一个 PropertyValueCondition

func (*Router) DELETE

func (r *Router) DELETE(path string, fn SpringWeb.Handler) *Mapping

DELETE 注册 DELETE 方法处理函数

func (*Router) GET

func (r *Router) GET(path string, fn SpringWeb.Handler) *Mapping

GET 注册 GET 方法处理函数

func (*Router) HEAD

func (r *Router) HEAD(path string, fn SpringWeb.Handler) *Mapping

HEAD 注册 HEAD 方法处理函数

func (*Router) OPTIONS

func (r *Router) OPTIONS(path string, fn SpringWeb.Handler) *Mapping

OPTIONS 注册 OPTIONS 方法处理函数

func (*Router) Or

func (r *Router) Or() *Router

Or c=a||b

func (*Router) PATCH

func (r *Router) PATCH(path string, fn SpringWeb.Handler) *Mapping

PATCH 注册 PATCH 方法处理函数

func (*Router) POST

func (r *Router) POST(path string, fn SpringWeb.Handler) *Mapping

POST 注册 POST 方法处理函数

func (*Router) PUT

func (r *Router) PUT(path string, fn SpringWeb.Handler) *Mapping

PUT 注册 PUT 方法处理函数

func (*Router) Request

func (r *Router) Request(method string, path string, fn SpringWeb.Handler) *Mapping

Request 注册任意 HTTP 方法处理函数

func (*Router) SetFilterNames

func (r *Router) SetFilterNames(filterNames ...string) *Router

SetFilterNames 设置过滤器列表

func (*Router) SetFilters

func (r *Router) SetFilters(filters ...SpringWeb.Filter) *Router

Filters 设置过滤器列表

func (*Router) SetPort

func (r *Router) SetPort(port int) *Router

SetPort 设置路由的端口

type WebMapping

type WebMapping struct {
	Mappings map[string]*Mapping
}

WebMapping Web 路由映射表

func NewWebMapping

func NewWebMapping() *WebMapping

NewWebMapping WebMapping 的构造函数

func (*WebMapping) Request

func (m *WebMapping) Request(method string, path string, fn SpringWeb.Handler) *Mapping

Request

Jump to

Keyboard shortcuts

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