Primeros Pasos

Pre-requisitos

  • Java 21+

  • Maven 3.8+

Generar un nuevo proyecto

mvn archetype:generate \
  -DarchetypeGroupId=io.zutun.templates \
  -DarchetypeArtifactId=template-spring-microservice-multitenant \
  -DarchetypeVersion=<version>

Ademas de las propiedades estandar de Maven (groupId, artifactId, version), el arquetipo solicitara las siguientes propiedades:

Propiedad Descripcion Default

package

Paquete base de Java

io.zutun.templates

applicationName

Nombre del servicio Spring Boot

DomainService

applicationDesc

Descripcion breve del servicio

Domain Service

apiBasePath

Prefijo base para los endpoints REST

/domain

openApiTag

Tag de agrupacion en la documentacion OpenAPI

Domain

aggregateRoot

Nombre del aggregate root principal (PascalCase)

 — 

domainName

Nombre del bounded context (camelCase)

 — 

tableName

Nombre de la tabla principal en base de datos

 — 

Las propiedades sin default son obligatorias.

Flujo general

Diagram

Configurar el entorno local

El proyecto generado incluye el archivo application-local.yaml con una configuracion lista para desarrollo. Utiliza una base de datos H2 en archivo y tres tenants preconfigurados:

tenants:
  default-tenant: "public"

  defaults:
    url: jdbc:h2:file:./.db/${spring.application.name};DB_CLOSE_DELAY=-1;AUTO_SERVER=TRUE
    username: sa
    password: sa

  data-sources:
    public:
      tenant-id: null
      schema: public
    tenant1:
      tenant-id: 674b414f-27b5-461b-a8da-933326669018
      schema: tenant1_schema
    tenant2:
      tenant-id: 26653eb6-bf32-4bcd-aee3-49311d3addbe
      schema: tenant2_schema

El proyecto tambien incluye un script wizard.sh para facilitar la configuracion inicial:

./wizard.sh init-all

Comandos disponibles:

Comando Descripcion

init-idea

Genera las run configurations de IntelliJ IDEA.

init-h2

Inicializa la base de datos H2 local con los esquemas de los tenants configurados.

init-all

Ejecuta init-idea e init-h2.

run

Arranca el servicio con el perfil local.

Ejecutar el servicio

./wizard.sh run

O directamente con Maven:

mvn spring-boot:run -Dspring-boot.run.profiles=local

El perfil local utiliza una base de datos H2 en archivo con tenants de ejemplo preconfigurados, sin necesidad de infraestructura externa.

Una vez iniciado, la documentacion OpenAPI estara disponible en http://localhost:8080/swagger-ui.html.

A desarrollar

Ya tenes un microservicio funcional. Importa el proyecto en tu IDE y empieza a construir tu dominio. Si prefieres avanzar con un ejemplo concreto, el Tutorial: Task Manager te guia paso a paso.