bean

package
v1.5.2 Latest Latest
Warning

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

Go to latest
Published: Apr 12, 2023 License: Apache-2.0 Imports: 6 Imported by: 0

README

bean

对象进行管理

功能:

  • 统一管理对象
  • 动态的查看对应对象的属性
  • 动态的调用对应对象的方法

场景:适合非业务开发的工具中,比如线上调试工具

api

// 注册对象;注意:对象只可为指针类型
func AddBean(beanName string, beanPtr any) {}

// 对象存在否
func ExistBean(beanName string) bool {}

// 获取对象
func GetBean(beanName string) any {}

// 获取对象key
func GetBeanNames(beanName string) []string {}

// 查看:对象属性值
func GetField(beanName, fieldName string) any {}

// 修改:对象属性值
func SetField(beanName, fieldName string) any {}

// 执行对象的函数
func CallFun(beanName, methodName string, parameterValueMap map[string]any) []any {}

示例

func TestAddBean(t *testing.T) {
    tt := TestEntity{Name: "hello", Age: 12}
    // 注册
    bean.AddBean("test", &tt)

    // 获取bean
    t1 := bean.GetBean("test")
    t2 := t1.(*TestEntity)
    assert.Equal(t, t2.Name, tt.Name)
}

func TestGetFieldShow(t *testing.T) {
    tt := TestEntity{Name: "value"}
    // 添加注册
    bean.AddBean("test", &tt)

    // 获取值
    actValue := bean.GetField("test", "Name")
    assert.Equal(t, actValue, "value")

    // 修改值
    bean.SetField("test", "Name", "value-change")

    // 查看
    actValue = bean.GetField("test", "Name")
    assert.Equal(t, actValue, "value-change")
}

func TestCallFun1(t *testing.T) {
    tt := TestEntity{}

    // 添加bean
    bean.AddBean("test", &tt)

    parameterMap := map[string]any{}
    // 说明:参数map中的key只可为p1、p2、p3...,用于表示参数的顺序
    aparameterMap["p1"] = "name"

    // 函数调用
    fv := bean.CallFun("test", "Fun1", parameterMap)
    assert.Equal(t, isc.ToString(fv[0]), "name")
}

在线管理bean功能

在运行中如果出现问题,需要查看某个对象的属性和函数的时候,就可以使用该功能,进行动态的查看、修改对应属性,以及动态的执行对应的函数

base:
  endpoint:
    # 是否启用bean的端点,默认false
    bean:
      enable: true
# 获取注册的所有bean
curl http://localhost:xxx/{api-prefix}/{api-module}/bean/name/all'
# 查询注册的某些bean 
curl http://localhost:xxx/{api-prefix}/{api-module}/bean/name/list/:name'
# 查询某个bean的属性值
curl -X POST http://localhost:xxx/{api-prefix}/{api-module}/bean/field/get' -d '{"bean": "xx", "field": "xxx"}'
# 修改某个bean的属性的值(暂时只支持基本类型)
curl -X PUT http://localhost:xxx/{api-prefix}/{api-module}/bean/field/set' -d '{"bean": "xx", "field": "xxx", "value": "xxx"}'
# 调用bean的某个函数(参数暂时只支持基本类型)
curl -X POST http://localhost:xxx/{api-prefix}/{api-module}/bean/fun/call' -d '{"bean": "xx", "fun": "xxx", "parameter": {"p1":"xx", "p2": "xxx"}}'

提示:

  • 调用bean函数中,parameter的对应的map中的key只能是p1、p2、p3...这种表示的是第一个、第二个、第三个参数的值
  • 调用bean函数中,参数值暂时只适用于基本结构,对于实体类或者map类的暂时不支持,后续可以考虑支持

Documentation

Index

Constants

This section is empty.

Variables

View Source
var BeanMap map[string]any

Functions

func AddBean

func AddBean(beanName string, beanPtr any)

AddBean 添加bean 强烈建议:bean使用指针

func BeanTest added in v1.3.0

func BeanTest()

func CallFun

func CallFun(beanName, methodName string, parameterValueMap map[string]any) []any

@parameterValueMap p1、p2、p3...这种表示的是第一个、第二个、第三个参数的值

func Clean

func Clean()

func DebugBeanAll

func DebugBeanAll(c *gin.Context)

func DebugBeanFunCall

func DebugBeanFunCall(c *gin.Context)

func DebugBeanGetField

func DebugBeanGetField(c *gin.Context)

func DebugBeanList

func DebugBeanList(c *gin.Context)

func DebugBeanSetField

func DebugBeanSetField(c *gin.Context)

func ExistBean

func ExistBean(beanName string) bool

func GetBean

func GetBean(beanName string) any

func GetBeanNames

func GetBeanNames(beanName string) []string

模糊搜索

func GetBeanWithNamePre added in v1.4.5

func GetBeanWithNamePre(beanName string) []any

前缀搜索

func GetField

func GetField(beanName, fieldName string) any

func SetField

func SetField(beanName string, fieldName string, fieldValue any)

SetField 修改属性的话,请将对象设置为指针,否则不生效

Types

type FieldGetReq

type FieldGetReq struct {
	Bean  string
	Field string
}

type FieldSetReq

type FieldSetReq struct {
	Bean  string
	Field string
	Value any
}

type FunCallReq

type FunCallReq struct {
	Bean      string
	Fun       string
	Parameter map[string]any
}

Jump to

Keyboard shortcuts

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