Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

joalvarezdev/simple-example-api

Repository files navigation

Simple Example API

Una API de ejemplo desarrollada con Spring Boot que demuestra una arquitectura por capas con patrones genéricos y generación automática de código CRUD.

Tecnologías utilizadas

  • Java 21 - Lenguaje de programación
  • Spring Boot 3.5.2 - Framework principal
  • PostgreSQL - Base de datos
  • Liquibase - Migraciones de base de datos
  • SpringDoc OpenAPI - Documentación automática de API
  • Gradle - Gestión de dependencias y construcción
  • Docker & Docker Compose - Containerización
  • PMD - Análisis estático de código

Requisitos previos

  • Java 21+
  • PostgreSQL
  • Docker (opcional)
  • Task - Para comandos automatizados
  • Bun - Para generadores de código

Configuración inicial

1. Clonar el repositorio

git clone https://github.com/joalvarezdev/simple-example-api
cd simple-example-api

2. Configurar variables de entorno

Crear un archivo .env en la raíz del proyecto:

DATABASE_URL=jdbc:postgresql://localhost:5432/simple-example-api
DATABASE_USERNAME=postgres
DATABASE_PASSWORD=postgres
CONTEXT_PATH=/

3. Configurar base de datos PostgreSQL

# Usando Docker
docker run --name postgres-simple-api -e POSTGRES_DB=simple-example-api -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres:15

o

# Usando Docker Compose
docker compose up -d

Cómo ejecutar

Usando Gradle directamente

./gradlew bootRun

Usando Task (recomendado)

# Construir la aplicación
task build
# Construir imagen Docker
task docker-build APP_NAME=simple-example-api
# Generar código CRUD
task entity

La aplicación estará disponible en: http://localhost:8090

Generación de código

Este proyecto incluye un sistema de generadores de código usando Plop.js que permite crear componentes CRUD completos.

Plantillas disponibles:

  • Controller - Controladores REST
  • Service - Servicios de negocio
  • DAO - Objetos de acceso a datos
  • DTO - Objetos de transferencia de datos
  • Domain - Entidades de dominio
  • Repository - Repositorios JPA
  • Mapper - Mapeadores entre capas

Uso:

task entity
# Seguir las instrucciones interactivas para generar el código

Estructura del proyecto

src/main/java/com/joalvarez/simpleexampleapi/
├── config/ # Configuraciones de Spring
├── controller/ # Controladores REST
│ └── general/ # Controladores base y genéricos
├── data/ # Capa de datos
│ ├── dao/ # Data Access Objects
│ ├── dto/ # Data Transfer Objects
│ ├── mapper/ # Mapeadores entre capas
│ └── repository/ # Repositorios JPA
├── exception/ # Manejo de excepciones
├── service/ # Servicios de negocio
│ └── general/ # Servicios base y genéricos
└── shared/ # Utilidades compartidas

Patrones arquitectónicos:

  • Arquitectura por capas (Controller → Service → Repository)
  • Clases genéricas para operaciones CRUD comunes
  • Clases base para funcionalidad compartida
  • DTOs para transferencia de datos
  • Mappers para conversión entre capas

Documentación de API

Swagger UI

Una vez que la aplicación esté ejecutándose, la documentación interactiva estará disponible en:

Endpoints principales

  • GET /actuator/health - Health check
  • Endpoints adicionales según las entidades generadas

Base de datos

Configuración

  • Driver: PostgreSQL
  • Puerto por defecto: 5432
  • Base de datos: simple-example-api

Migraciones con Liquibase

# Las migraciones están en: src/main/resources/database/
# Configuración en: liquibase-changelog.yml

Nota: Liquibase está deshabilitado por defecto (enabled: false). Para habilitar migraciones automáticas, cambiar a enabled: true en application.yml.

Docker

Construcción manual

# Construir JAR
./gradlew clean build
# Construir imagen
docker build -t joalvarezdev/simple-example-api:latest --build-arg ARTIFACT_NAME=simple-example-api.jar .

Usando Task

# Construir imagen
task docker-build APP_NAME=simple-example-api
# Construir y subir al registry
task docker-push APP_NAME=simple-example-api

Docker Compose

docker-compose up -d

Calidad de código

PMD (análisis estático)

./gradlew pmdMain pmdTest

Las reglas de PMD están configuradas en linters/pmd-ruleset.xml.

Testing

Ejecutar tests

./gradlew test

Configuración adicional

Variables de configuración importantes:

  • server.port - Puerto del servidor (por defecto: 8090)
  • spring.datasource.* - Configuración de base de datos
  • springdoc.swagger-ui.* - Configuración de Swagger

Desarrollo

Comandos útiles

# Instalar dependencias de Node (para generadores)
task node
# Limpiar y construir
./gradlew clean build
# Ejecutar con perfil específico
./gradlew bootRun --args='--spring.profiles.active=dev'
# Ver nombre del proyecto
./gradlew printProjectName

About

simplem app in java api

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /