Go全家桶规划之二: GO依赖注入框架godi之五,未来会实现:实现BEAN工厂自动注册了, 全自动生成注册代码

ichub/godiicon-default.png?t=N7T8https://gitee.com/ichub/godi.git

代码位置:

后续要解析依赖关系,方便注入,和判断是否组合了baseEntity

读取所有文件信息,只解析继承BaseEntity的struct

根据代码模板生成xxxx_init.go注册代码 

func (this *DiFactroy) MakeAllDiBaseEntity() {
    this.ParseAll()
    for _, v := range this.StructInfoMap {
       if v.IsBaseEntiyStruct {
          this.MakeBatch(v)
       }
    }

}

func (this *TestDiFactoySuite) Test006_ParseDiAll() { this.DiFactroy.MakeDiAll() }

结果产生xxx_init.go文件,相关信息:

{
     "IsBaseEntiyStruct": true,
     "fullPkg": "gitee.com/ichub/godi/di/dimodel/single",
     "ExistNewStruct": true,
     "NewStructName": "NewSingleEntity",
     "pkg_name": "single",
     "struct_name": "SingleEntity",
     "pathFile": "D:\\go-ichub\\go\\godi\\di\\dimodel\\single\\single_entity.go",
     "out_path": "./",
     "out_file": "",
     "force_build": false,
     "methodNameList": [
          "Autoload",
          "AutoInject",
          "Check"
     ],
     "Fields": [
          "IchubClientDto",
          "Id",
          "Name"
     ]
}

全局的可能通过配置确定要不要强制生成或者不生成

生成的文件

package single

import (
    "gitee.com/ichub/goconfig/common/base/baseiface"
    "gitee.com/ichub/goconfig/common/basedi"
)

const single_nameSingleEntity = "SingleEntity"

// init
// register
// load
func init() {
    registerBeanSingleEntity()
}

// register SingleEntity
func registerBeanSingleEntity() {
    basedi.RegisterLoadBean(single_nameSingleEntity, LoadSingleEntity)
}

func FindBeanSingleEntity() *SingleEntity {
    return basedi.FindBean(single_nameSingleEntity).(*SingleEntity)
}

func LoadSingleEntity() baseiface.ISingleton {
    return NewSingleEntity()
}

相关推荐

  1. go 语言实现依赖注入

    2024-04-20 15:30:03       51 阅读
  2. Spring注解实现依赖注入

    2024-04-20 15:30:03       61 阅读
  3. spring():基于注解实现依赖注入

    2024-04-20 15:30:03       46 阅读
  4. 9、SpringBean生命周期~依赖注入(总)

    2024-04-20 15:30:03       32 阅读
  5. 11、SpringBean生命周期~依赖注入(2)

    2024-04-20 15:30:03       22 阅读
  6. 使用 kapt 注解生成依赖注入代码

    2024-04-20 15:30:03       19 阅读
  7. go使用Nacos 注册实例注销实例

    2024-04-20 15:30:03       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-20 15:30:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-20 15:30:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-20 15:30:03       82 阅读
  4. Python语言-面向对象

    2024-04-20 15:30:03       91 阅读

热门阅读

  1. 探索人工智能:AI如何改变我们的工作和生活

    2024-04-20 15:30:03       30 阅读
  2. 应急响应流程

    2024-04-20 15:30:03       35 阅读
  3. 安卓手机APP开发__媒体开发部分__直播流

    2024-04-20 15:30:03       37 阅读
  4. web server apache tomcat11-02-setup 启动

    2024-04-20 15:30:03       36 阅读
  5. 基于python的pdf版本的PPT转换为office PPT

    2024-04-20 15:30:03       29 阅读
  6. mariadb 添加新用户,并给新用户对应权限

    2024-04-20 15:30:03       40 阅读
  7. 静默拷贝U盘里的ppt/pptx

    2024-04-20 15:30:03       37 阅读
  8. Tomcat 启动闪退问题解决方法

    2024-04-20 15:30:03       43 阅读
  9. Tomcat 启动闪退问题解决方法

    2024-04-20 15:30:03       49 阅读
  10. mmcv bug记录

    2024-04-20 15:30:03       39 阅读
  11. 什么是过滤器?

    2024-04-20 15:30:03       33 阅读