bean_factory.go 741 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package dynamic
  2. import (
  3. "reflect"
  4. )
  5. var BeanFactory *BeanFactoryImpl
  6. func init() {
  7. BeanFactory = NewBeanFactory()
  8. }
  9. type BeanFactoryImpl struct {
  10. beanMap BeanMap
  11. }
  12. func NewBeanFactory() *BeanFactoryImpl {
  13. return &BeanFactoryImpl{beanMap: make(BeanMap)}
  14. }
  15. func (f *BeanFactoryImpl) BeanRegister(bean interface{}) {
  16. f.beanMap.addBean(bean)
  17. }
  18. func (f *BeanFactoryImpl) GetBean(name string) reflect.Value {
  19. if name == "" {
  20. return reflect.Value{}
  21. }
  22. v := f.beanMap.getBean(name)
  23. if v.IsValid() {
  24. return v
  25. }
  26. return reflect.Value{}
  27. }
  28. func (f *BeanFactoryImpl) GetBeanInterface(name string) interface{} {
  29. if name == "" {
  30. return nil
  31. }
  32. v := f.beanMap.getBean(name)
  33. if v.IsValid() {
  34. return v.Interface()
  35. }
  36. return nil
  37. }