Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Redis Cache API

Uma aplicação Spring Boot com Java 21 que implementa uma API REST para gerenciamento de cache usando Redis. A aplicação segue as melhores práticas de código limpo e princípios SOLID, com testes unitários e de integração usando Testcontainers.

🚀 Tecnologias Utilizadas

  • Java 21
  • Spring Boot 3.2.0
  • Spring Data Redis
  • Redis 7
  • Maven
  • JUnit 5
  • Testcontainers
  • Docker

📋 Funcionalidades

A API oferece operações CRUD completas para gerenciamento de conteúdo em cache:

  • ✅ Criar conteúdo
  • ✅ Buscar conteúdo por ID
  • ✅ Listar todos os conteúdos
  • ✅ Filtrar conteúdos por categoria
  • ✅ Atualizar conteúdo
  • ✅ Deletar conteúdo
  • ✅ Verificar existência de conteúdo
  • ✅ Deletar todos os conteúdos

🏗️ Arquitetura

A aplicação segue os princípios de Clean Architecture e SOLID:

src/
├── main/java/com/example/rediscache/
│   ├── domain/
│   │   ├── model/          # Entidades de domínio
│   │   ├── repository/     # Interfaces de repositório
│   │   └── service/        # Serviços de domínio
│   ├── infrastructure/
│   │   ├── config/         # Configurações
│   │   └── repository/     # Implementações de repositório
│   └── presentation/
│       ├── controller/     # Controllers REST
│       ├── dto/           # DTOs de entrada/saída
│       └── exception/     # Tratamento de exceções
└── test/
    ├── integration/       # Testes de integração
    └── unit/             # Testes unitários

🔧 Pré-requisitos

  • Java 21
  • Maven 3.6+
  • Docker e Docker Compose

🚀 Como Executar

1. Clonar o repositório

git clone <repository-url>
cd test-with-docker

2. Iniciar o Redis com Docker Compose

docker-compose up -d

Isso iniciará:

  • Redis na porta 6379
  • Redis Commander (interface web) na porta 8081

3. Executar a aplicação

mvn spring-boot:run

A aplicação estará disponível em: http://localhost:8080

4. Acessar o Redis Commander (opcional)

Interface web para visualizar dados do Redis: http://localhost:8081

🧪 Executar Testes

Todos os testes

mvn test

Apenas testes unitários

mvn test -Dtest="*Test"

Apenas testes de integração

mvn test -Dtest="*IntegrationTest"

📚 Endpoints da API

Criar Conteúdo

POST /api/contents
Content-Type: application/json

{
  "title": "Meu Título",
  "description": "Minha descrição",
  "category": "Categoria"
}

Buscar Conteúdo por ID

GET /api/contents/{id}

Listar Todos os Conteúdos

GET /api/contents

Filtrar por Categoria

GET /api/contents?category=MinhaCategoria

Atualizar Conteúdo

PUT /api/contents/{id}
Content-Type: application/json

{
  "title": "Título Atualizado",
  "description": "Descrição atualizada",
  "category": "Nova Categoria"
}

Deletar Conteúdo

DELETE /api/contents/{id}

Verificar Existência

GET /api/contents/{id}/exists

Deletar Todos os Conteúdos

DELETE /api/contents

🔍 Validações

  • Título: Obrigatório, máximo 100 caracteres
  • Descrição: Obrigatória, máximo 500 caracteres
  • Categoria: Obrigatória, máximo 50 caracteres

🐳 Testcontainers

Os testes de integração utilizam Testcontainers para criar containers Docker temporários do Redis, garantindo:

  • Isolamento completo entre testes
  • Ambiente idêntico ao de produção
  • Testes confiáveis e reproduzíveis
  • Limpeza automática após os testes

📊 Cobertura de Testes

A aplicação possui testes abrangentes cobrindo:

  • ✅ Testes unitários do modelo de domínio
  • ✅ Testes unitários dos serviços
  • ✅ Testes de integração do repositório Redis
  • ✅ Testes de integração da API REST
  • ✅ Testes de validação de entrada
  • ✅ Testes de tratamento de exceções

🛠️ Configuração

Configuração do Redis

As configurações do Redis podem ser alteradas no arquivo application.yml:

spring:
  data:
    redis:
      host: localhost
      port: 6379
      timeout: 2000ms

Perfis de Ambiente

  • default: Configuração para desenvolvimento
  • test: Configuração específica para testes

🔧 Troubleshooting

Redis não conecta

  1. Verifique se o Docker está rodando
  2. Execute docker-compose up -d para iniciar o Redis
  3. Verifique se a porta 6379 não está sendo usada por outro processo

Testes falhando

  1. Certifique-se de que o Docker está disponível
  2. Verifique se há recursos suficientes para executar containers
  3. Execute mvn clean test para limpar e executar novamente

📝 Próximos Passos

  • Implementar autenticação e autorização
  • Adicionar métricas e monitoramento
  • Implementar cache com TTL configurável
  • Adicionar documentação OpenAPI/Swagger
  • Implementar paginação para listagem

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages