Arquitectura

El servicio generado sigue una Arquitectura Hexagonal (Puertos y Adaptadores) combinada con principios de Domain-Driven Design.

Capas

Diagram
Capa Responsabilidad

Domain

Logica de negocio pura: aggregate roots, entidades, eventos de dominio e invariantes. Sin dependencias de framework.

Ports

Contratos (interfaces) que definen como el dominio interactua con el exterior. Se dividen en input ports (casos de uso) y output ports (persistencia, consultas, publicacion de eventos).

Services

Servicios de aplicacion que implementan los input ports y orquestan los output ports. No contienen logica de negocio.

Adapters

Implementaciones concretas que conectan los puertos con la tecnologia. Se dividen en inbound (controladores REST, listeners de eventos) y outbound (repositorios JPA, publicadores de eventos).

Reglas fundamentales:

  • El dominio nunca importa adaptadores ni servicios.

  • Los puertos son solo interfaces.

  • Los adaptadores no dependen entre si — solo de los puertos que implementan.

Commons

El paquete commons provee infraestructura compartida entre bounded contexts: entidades base, puertos de publicacion de eventos, el patron outbox/inbox y el manejo centralizado de excepciones.