This README is also available in English.
Uma plataforma de microsserviços em Java 21 Spring Boot para gerenciar clientes, produtos e vendas. Ela integra MongoDB para persistência, Spring Cloud Config Server para configuração centralizada, Feign clients para comunicação entre serviços e OpenAPI/Swagger para documentação das APIs.
- Microsserviços de Cliente, Produto e Vendas
- Configuração centralizada via Spring Cloud Config Server
- Persistência no MongoDB com padrão de repositório
- APIs RESTful documentadas com OpenAPI/Swagger
- Comunicação entre serviços usando Feign clients e RestTemplate
- Tratamento estruturado de erros com exceções customizadas e erros de validação
- Testes unitários e de integração em todos os serviços
- Javadocs detalhados gerados para todas as classes e enums
- Java: 21
- Spring Boot: 3.5.4
- Spring Cloud: 2025.0.0
- Spring Cloud Config Server
- MongoDB
- Feign Clients
- Springdoc OpenAPI (Swagger UI)
- Lombok
- JUnit + Mockito para testes
- A branch
dockerizedcontém o suporte completo a Docker. - Cada serviço possui um
Dockerfilee.dockerignore. docker-compose.ymlorquestra todos os serviços e o MongoDB.wait-for-it.shgarante que os serviços iniciem apenas após as dependências estarem prontas.- As configurações centralizadas são obtidas do ConfigServer usando hostnames do Docker.
- ConfigServer: Gerenciamento centralizado de configuração para todos os microsserviços
- ClientService: Gerencia clientes (CRUD, busca por ID/CPF, validações)
- ProductService: Gerencia produtos (CRUD, busca por código, validações)
- SalesService: Gerencia vendas, ciclo de vida de status e associações de produtos
- Client: Entidade com validação, índices únicos e anotações Swagger
- Product: Entidade com validação, enum de status (ATIVO/INATIVO) e suporte a Lombok
- Sales: Entidade com gerenciamento de produtos, cálculo de preço total e ciclo de vida de status (INICIADA, FINALIZADA, CANCELADA)
- DTOs: Objetos de transferência para Vendas, Produto e Cliente
- Status Enum: Compartilhado entre domínios para consistência dos estados de ciclo de vida
Inclui Javadocs completos para todas as classes centrais, incluindo:
- Classes principais (SalesServiceApplication, ClientServiceApplication, ProductServiceApplication, ConfigServerApplication).
- Configurações (MongoConfig, OpenAPIConfig, RestTemplateConfig)
- Classes de domínio (Client, Product, ProductQuantity, Sales)
- DTOs (ClientDTO, ProductDTO, SalesDTO)
- Serviços e Casos de Uso (RegisterClient, SearchClient, RegisterProduct, SearchProduct, RegisterSale, SearchSale)
- Controladores (ClientResource, ProductResource, SalesResources)
- Tratamento de exceções (ApiError, ApiValidationError, BadRequestException, EntityNotFoundException, RestExceptionHandler)
- Utilitários (RestRequest, RestUtils)
- Testes (SalesTest, SalesResourcesTest, ProductResourceTest, ClientResourceTest)
- Testes unitários para domínios (SalesTest, lógica de ProductQuantity)
- Testes de controladores REST (SalesResourcesTest, ProductResourceTest, ClientResourceTest)
- Integração com Mockito para operações de CRUD e validações
- Cobertura de tratamento de exceções para BadRequest e EntityNotFound
- Clone o repositório:
git clone https://github.com/AsrielDreemurrGM/Microservices_Online_Selling.git - Inicie o serviço ConfigServer.
- Inicie os serviços ClientService, ProductService e SalesService.
- Acesse a documentação da API em:
Client Service: http://localhost:8081/swagger-ui.htmlProduct Service: http://localhost:8082/swagger-ui.htmlSales Service: http://localhost:8083/swagger-ui.html - Para executar com Docker (branch
dockerized):git checkout dockerized docker-compose up --build
- Commit inicial com quatro microsserviços, configuração e setup do build
- Domínio de Cliente, DTO, repositório, casos de uso, recursos e testes
- Domínio de Produto, DTO, repositório, casos de uso, recursos, configs e testes
- Domínio de Vendas, DTO, serviços (RegisterSale, SearchSale), recursos e repositório
- Setup do ConfigServer e correções em arquivos YML para microsserviços
- Padronização do tratamento de exceções em todos os serviços
- Adição de configurações OpenAPI e Mongo para todos os serviços
- Criação e melhoria de testes unitários para serviços de Cliente, Produto e Vendas
- Adição de Javadocs detalhados em todos os serviços, controladores, domínios e configs
- Refatoração de endpoints para maior clareza
- Configuração de Docker para microsserviços (branch
dockerized)