Categorygithub.com/demoManito/inject
repositorypackage
1.0.0
Repository: https://github.com/demomanito/inject.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# README

Inject (golang dependency injection)

About Inject

inject is a simple dependency injection library for Go. based on tag inject to inject dependencies into struct fields.

Quick Start

  • service/service.go
package service

import (
    "github.com/demoManito/inject"

    "github.com/xxx/dao"
)

type Service struct {
    dao *Dao `inject:"dao"`
}

func init() {
    inject.Register(func(injector inject.Injector) error {
        injector.Register("service", &Service{})
        return nil
    })
}
  • dao/dao.go
package dao

import (
    "database/sql"

    "github.com/demoManito/inject"
)

type Dao struct {
    db *sql.DB `inject:"db"`
}

func init() {
    inject.Register(func(injector inject.Injector) error {
        injector.Register("dao", &Dao{db: &sql.DB{}})
        return nil
    })
}
  • main.go
package main

import (
    "database/sql"

    "github.com/demoManito/inject"
    "github.com/demoManito/inject/injector"

    _ "github.com/xxx/dao"
    _ "github.com/xxx/service"
)

type Handler struct {
    service *Service `inject:"service"`
}

func main() {
    hanlder := &Handler{}
    inject.New(injector.New()).Inject(handler)
    
    // eg: use handler
    handler.service.dao.db.Ping()
}