0% encontró este documento útil (0 votos)
13 vistas13 páginas

Construir Proyecto Maven-SpringBoot

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
13 vistas13 páginas

Construir Proyecto Maven-SpringBoot

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 13

GUÍA PARA CONSTRUIR UN PROYECTO MAVEN

CON SPRINGBOOT Y SQL


DESDE CERO
PASO 1.
Acceder a https://start.spring.io/ y configurar el proyecto a nuestro gusto. En mi caso
utilizaré Java 21 y el packaging en .jar

Como dependencias utilizaré las siguientes:

Una vez configurado, pulsamos en GENERATE e importamos el proyecto en nuestro IDE


de preferencia. En mi caso utilizo en IntelliJ IDEA.
PASO 2.
Una vez importado, nos saldrá una estructura similar a la siguiente:

Accedemos al pom.xml y comprobaremos que están las dependencias que


seleccionamos anteriormente.
En mi caso voy a añadir una más, con el siguiente formato:

Las dependencias las explicaré una por una lo que hacen el anexo final.
PASO 3.
Configurar el archivo application.properties, que se encuentra en la

En mi caso lo he configurado así para utilizarlo con una base de datos alojada en
MySQL.
PASO 4.
Crear la arquitectura necesaria con sus patrones de diseño para comenzar a elaborar la
aplicación. En mi caso voy a utilizar una Arquitectura DDD orientada a microservicios:

En este modelo, el usuario realiza una petición, la cual


entrará a través de nuestro endpoint en el
@RestController (CarController). Esta clase solicitará los
datos a la interfaz del negocio (CarService) a través de
un método, el cual a su vez, implementará dicho método
en la clase @Service(CarServiceImpl).
Esta clase, en ultima instancia, llamará con ese método a
nuestra interfaz @Repository(CarRepository), la cual
extiende de JPARepository, para recibir una lista del
objeto domain @Entity(Car)

Este @Repository es el responsable de hacer una petición a la base de datos, donde le


enviaremos un objeto domain de tipo @Entity(Car) y un campo para el id de la tabla, y
lo rellenará con los datos solicitados en la query.
Una vez los datos hayan vuelto a la List<Car> del service, se pasarán al controlador,
donde con un método de la clase mapper convertiremos una lista del objeto domain a
una lista del objeto CarDTO (DataTransferObject), que es un tipo de objeto
exactamente igual que el domain. Esto se hace así porque no está bien retornar
directamente el objeto domain directamente, ya que es el que contiene las tablas y se
realiza así por convenio.
Por último, esta List<CarDTO> se metería dentro de un objeto de tipo ResponseEntity,
habitual para las respuestas de microservicios ya que contiene métodos específicos
muy interesantes, y se retornaría este ResponseEntity. Todas estas clases podeis verlas
en el proyecto. El flujo completo que he creado el siguiente:
PASO 5.
Por útimo, es necesario realizar los siguientes pasos para desplegar la aplicación:
En primer lugar, debemos realizar una instalación limpia del proyecto. Como es
probable que no se este utilizando el mismo IDE, lo realizaré desde la terminal.
Nos colocamos en la carpeta raíz del proyecto, en mi caso:

Pulsamos click derecho sin pulsar sobre ningún archivo y abrimos la opción de “Abrir en
Terminal” para lanzar el cmd. Si no os sale, podeis hacer el siguiente truquillo, que
consiste en escribir “cmd” en la barra de búsqueda, estando en la carpeta raíz del
proyecto. Al pulsar enter, debería de abrirse la terminal.
Escribiremos el comando: mvn clean install.
Si todo ha salido correcto, debería de aparecer tal que así.

Si da algún error, significa que hay algo en el proyecto que no está correcto, ya que,
para compilar, es necesario que todos los archivos .java del proyecto funcionen
correctamente para ser transformados a .class, donde el sistema podrá leer los
archivos en lenguaje máquina. Si tenemos algún error, este proceso no ocurrirá.
Si todo ha salido bien, la ejecutaremos con el comando: mvn spring-boot:run
PASO 6.
Procedemos a lanzar una llamada al endpoint del controller desde el postman, que
mostrara todos los coches del taller alojados en la base de datos (debemos tenerla
creada previamente).
ANEXO.
Creación de la BBDD en MySQL:

Si tu SDK no funciona en tu IDE:


Descargar la versión de java que necesites para tu sistema. En mi caso, descargaré de
https://www.azul.com/downloads la version 21.0.5 de java para mi sistema operativo:

Hacer click en el instalador y activar todas las dependencias para que se creen los
archivos necesarios en las variables de entorno del sistema, así nos ahorraremos tener
que meterlas a mano.
Luego, en nuestro IDE, buscaremos la opción para cambiar el SKD o el JDK del proyecto,
eligiendo así la versión descargada. Si pide seleccionarla desde el explorador de
archivos, hay que buscar donde se ha instalado.
En mi caso, está en esta dirección:

Hay que comprobar que la versión del jdk de java del proyecto o del IDE se
corresponda con la versión que tenemos instalada. Comprobar esto con el terminal,
utilizando el comando: java -version.
Dependencias Instaladas:
Explicación de las Dependencias instaladas:
spring-boot-starter-web

Proporciona todas las dependencias necesarias para construir aplicaciones web


basadas en Spring Boot.

Incluye soporte para:

- Spring MVC: Controladores y gestión de rutas.

- Servidor embebido: Usa Tomcat o Jetty como servidor HTTP.

- Procesamiento de JSON: Incluye Jackson para serialización/deserialización.

- Permite crear APIs REST o aplicaciones web.

spring-boot-starter-test

Incluye dependencias y herramientas para pruebas unitarias e integración.

Contiene bibliotecas como:

- JUnit 5: Framework principal para pruebas unitarias.

- Mockito: Herramienta para crear objetos simulados (mocks).

- Spring Test: Utilidades específicas para probar componentes de Spring, como


contextos de aplicación.

- AssertJ: Framework para realizar aserciones de manera fluida.

- Hamcrest: Matchers para facilitar pruebas con expresiones personalizadas.

Nota: Su alcance (scope) es test, por lo que solo se usa durante las pruebas y no en
tiempo de ejecución.

spring-boot-starter-data-jpa

Proporciona todas las dependencias necesarias para usar Spring Data JPA con
Hibernate.

Incluye:

- JPA: Interfaz estándar de persistencia de Java.

- Hibernate: Implementación de JPA, utilizado como ORM (Object-Relational


Mapping).

- Herramientas para simplificar consultas y transacciones.

- Facilita el trabajo con bases de datos mediante:

- Repositorios Spring Data.

- Traducción automática de consultas basadas en métodos de repositorio.


mysql:mysql-connector-java

Proporciona el controlador JDBC necesario para conectarse a bases de datos MySQL.

Permite que Spring Boot use MySQL como base de datos en combinación con
JPA/Hibernate.

org.mapstruct:mapstruct

Es una biblioteca para mapear automáticamente objetos en Java.

Permite convertir entre clases, como convertir un DTO a una entidad y viceversa, generando el código
necesario en tiempo de compilación.

Facilita el trabajo con datos transformados entre capas.

org.mapstruct:mapstruct-processor

Es el procesador de anotaciones que genera automáticamente el código fuente para los mapeos
configurados en MapStruct.

Necesario para que MapStruct funcione correctamente.

org.projectlombok:lombok

Proporciona anotaciones como @Getter, @Setter, @ToString, @EqualsAndHashCode, y @Builder para


generar automáticamente código repetitivo como getters, setters, y constructores en tiempo de
compilación.

Facilita el desarrollo al evitar la escritura manual de métodos comunes.

Está marcada como “optional”, lo que significa que no es una dependencia obligatoria para otros
módulos que usen tu proyecto.
AGRADECIMIENTOS.
Esta guía la hago con el propósito de facilitar un poco el proceso de instalación y
configuración de un proyecto con las tecnologías mencionadas, ya que a mí en su día
me hubiera gustado que me lo explicaran de esta forma. Si tienes alguna pregunta o
problema, no dudes en contactarme.
Si te ha servido, te agradecería mucho que me sigas en mi LinkedIn.

También podría gustarte