Saltar al contenido principal

Entendiendo Un Diagrama de Secuencia Simple de Spring Boot

Imaginemos una aplicación simple que:

  1. Expone un endpoint REST API GET /api/films/{filmId}.
  2. Obtiene la información de películas de una base de datos.
Scroll to zoom • Drag corner to resize

Este diagrama muestra la vida de un único request en una aplicación Spring Boot estereotípica y sin adornos. Es el camino clásico desde el navegador del usuario hasta la base de datos y de vuelta.

  • Client: Es quien pide información (el navegador web del usuario, una app móvil, o incluso otro servicio backend). No sabe ni le importa cómo funciona el sistema; solo sabe que quiere una película, y está haciendo un GET request a la URL que le dijeron que use.

  • Spring MVC (FilmController):

    • El FilmController vive dentro de la caja "Spring MVC" porque es parte de la capa web. Su trabajo es manejar requests HTTP.
    • Escucha requests entrantes en endpoints específicos (como /api/films/{filmId}). Valida el request, lo desempaqueta, y luego delega el trabajo real a la capa de servicio. Debería mantenerse liviano; su rol principal es manejar tráfico web, no contener lógica de negocio.
  • Spring Container (FilmService & FilmRepository): El Spring Container es el corazón de tu app, manejando el ciclo de vida de tus beans.

    • FilmService: Este es tu caballo de batalla. Contiene la lógica de negocio central. Toma el request del controller, orquesta los pasos necesarios para cumplirlo (como obtener datos), y puede realizar alguna lógica (como chequear permisos o transformar datos).
    • FilmRepository: El único trabajo de este componente es hablar con la base de datos. Obtiene datos crudos y los devuelve. Separando esto, podrías cambiar tu base de datos de Postgres a MongoDB y solo tendrías que cambiar el repository, no tu lógica de negocio.
  • Database: La bóveda donde está toda tu data. Solo almacena y recupera datos cuando el FilmRepository se lo pide.