Saltar al contenido

¿Cuál es el uso de la capa de servicio en las aplicaciones Spring Boot?

Nuestro equipo de expertos pasados muchos días de investigación y de juntar de información, obtuvimos los datos necesarios, esperamos que te sea útil en tu proyecto.

Solución:

La capa de servicio no es un concepto exclusivo de Spring Boot. Es un término de arquitectura de software y con frecuencia se lo denomina patrón. Aplicaciones simples puede saltar la capa de servicio. En términos prácticos, nada le impide invocar un método de repositorio desde la capa del controlador.

Pero yo fuertemente aconseje el uso de una capa de servicio, ya que su objetivo principal es definir los límites de la aplicación. Las responsabilidades de la capa de servicio incluyen (pero no se limitan a):

  • Encapsular la implementación de la lógica de negocios;
  • Centralizar el acceso a los datos;
  • Definición de dónde comienzan/terminan las transacciones.

Citando el patrón de capa de servicio del Catálogo de patrones de arquitectura de aplicaciones empresariales de Martin Fowler:

Una capa de servicio define el límite de una aplicación y su conjunto de operaciones disponibles desde la perspectiva de la interfaz de las capas del cliente. Encapsula la lógica comercial de la aplicación, controlando las transacciones y coordinando las respuestas en la implementación de sus operaciones.

La separación de preocupaciones es la key:

  • El controlador (capa de presentación o puerto) es una interfaz de protocolo que expone la funcionalidad de la aplicación como servicios web RESTful. Se debe a eso y nada más.
  • El repositorio (capa de persistencia o adaptador) resúmenes de operaciones de persistencia: buscar (por id u otros criterios), guardar (crear, actualizar) y eliminar registros. Se debe a eso y nada más.
  • La capa de servicio (dominio) contiene su lógica empresarial. Define qué funcionalidades proporciona, cómo se accede a ellas y qué pasar y obtener a cambio: independiente de cualquier puerto (de los cuales puede haber múltiples: servicios web, colas de mensajes, eventos programados) e independiente de su funcionamiento interno (no es asunto de nadie que el servicio use el repositorio, o incluso cómo se representan los datos en un repositorio). La capa de servicio puede traducir 1:1 de los datos del repositorio, o puede aplicar filtrado, transformación o agregación de datos adicionales.

La lógica empresarial puede comenzar de manera simple al principio y no ofrecer más que operaciones CRUD simples, pero eso no significa que permanecerá así para siempre. Tan pronto como necesite ocuparse de los derechos de acceso, ya no se trata de enrutar las solicitudes del controlador directamente al repositorio, sino también de verificar el acceso y filtrar los datos. Las solicitudes pueden necesitar comprobaciones de consistencia y validación antes de llegar a la base de datos, se pueden aplicar reglas y operaciones adicionales, por lo que su los servicios obtienen más valor con el tiempo.

Incluso para casos CRUD simples, introduciría una capa de servicio, que al menos se traduce de DTO a Entidades y viceversa.

Mantenga sus controladores/repositorios (o puertos y adaptadores) estúpidos, y sus servicios inteligentes, y obtendrá una solución mantenible y comprobable.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *