ichub/godihttps://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() }