Este projeto demonstra o uso de Injeção de Dependência em Go utilizando o framework Google Wire. O exemplo inclui a implementação de um repositório de produtos, uma camada de caso de uso (use case), e uma aplicação que interage com um banco de dados SQLite.
Para fins de demonstração, o dado não é persistido nem recuperado do SQLite. Em vez disso, a função GetProduct
retorna um resultado estático. Isso é feito apenas para ilustrar a injeção de dependência sem a complexidade de operações reais de banco de dados.
O projeto está organizado da seguinte maneira:
main.go
: Ponto de entrada da aplicação. Configura o banco de dados SQLite e executa o caso de uso para obter informações sobre um produto.product/
: Diretório que contém a lógica de domínio relacionada aos produtos:product.go
: Define a estruturaProduct
, que representa a entidade Produto.repository.go
: Define a interfaceProductRepositoryInterface
e sua implementaçãoProductRepository
, responsável por interagir com o banco de dados.usecase.go
: Contém a camada de lógica de negóciosProductUseCase
, que utiliza o repositório para recuperar informações sobre produtos.
wire.go
: Arquivo que define as dependências e configura a injeção de dependência utilizando o Google Wire.wire_gen.go
: Arquivo gerado automaticamente pelo Wire que contém a implementação das injeções de dependência definidas emwire.go
. Este arquivo não deve ser editado manualmente, pois é gerado automaticamente pelo comandowire
.
Antes de executar o projeto, certifique-se de que seu ambiente possui as seguintes ferramentas instaladas:
- Go (versão 1.20 ou superior)
- SQLite3
- Google Wire
Siga os passos abaixo para configurar o projeto localmente:
-
Clone o repositório:
git clone https://github.com/ramonamorim/go-di.git cd go-di
-
Instale o wire:
go install github.com/google/wire/cmd/wire@latest
-
Instale as dependências do projeto usando go mod:
go mod tidy
-
Gere o código de injeção de dependências com o Wire. Navegue até o diretório que contém o arquivo
wire.go
e execute o seguinte comando:wire
Para executar a aplicação, siga os passos abaixo:
-
Execute a aplicação:
go run main.go wire_gen.go
-
O resultado esperado será:
ID: 1, Name: Teste
- Compilação:
O Go compila automaticamente o código quando você usa go run. Para uma abordagem mais tradicional, você pode compilar o código em um binário executável usando o comando go build:
go build -o app
- Execução
Isso criará um arquivo executável chamado myapp (ou o nome que você escolher) no diretório atual. Você pode então executar o binário diretamente:
./app