Para realizar este curso es importante tener instalado los siguientes programas::
Una vez que JDK y MAVEN sean instalados y configurados, procederemos a validar que este bien instalado para comenzar con la actividad.
Abrimos una terminal y validamos si reconoce nuestra versión de Java:
# Iniciamos validando que nuestra consola reconosca la versión de Java
jonathan.torres@Jonathans-MacBook-Pro LearningJava1.2 % java -version
java version "11.0.15" 2022-04-19 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.15+8-LTS-149)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.15+8-LTS-149, mixed mode)
Ahora desde una terminal y validamos si reconoce nuestra versión de Maven:
# Iniciamos validando que nuestra consola reconosca la versión de Java
jonathan.torres@Jonathans-MacBook-Pro BAZJAVA12022 % mvn -version
Apache Maven 3.8.5 (3599d3414f046de2324203b78ddcf9b5e4388aa0)
Maven home: /Users/jonathan.torres/Open/apache-maven-3.8.5
Java version: 11.0.15, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-11.0.15.jdk/Contents/Home
Default locale: en_MX, platform encoding: UTF-8
OS name: "mac os x", version: "12.3.1", arch: "x86_64", family: "mac"
jonathan.torres@Jonathans-MacBook-Pro BAZJAVA12022 %
Implementación de un servicio MVC, que maneje las capas Controller, Service y Repository
1 . Vamos a cambiar nuestro servicio LearningJava a un servicio MVC de tipo Rest. Comenzamos agregando las siguientes dependencias:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
Estas dependencias nos permiten habilitar el servicio REST al usar la anotación @RestController.
- Ahora vamos a crear un nuevo package en donde vamos a manejar nuestras clases de tipo controller y creamos nuestra primera clase:
Como puedes ver vamos a implementar la anotación @RestController. Esta nos permite exponer nuestro controller para que pueda ser consumido mediante el Mapping definido, en este caso vamos a usar "/api"
- Continuamos modificando nuestra clase UserServiceImpl, vamos a crear la anotación @Service. Con esto comenzamos a definir las capas de nuestro servicio MVC.
4 Continuamos modificando nuestra clase UserRepositoyImpl, vamos a crear la anotación @Repository. Con esto comenzamos a definir las capas de nuestro servicio MVC.
- Ya contamos con la capa de Service y Repository, comenzamos con la inyección de nuestro service a nivel controller, esto para poder acceder a sus metodos:
- Ahora moveremos nuestro endpoint que realiza el login, esto lo haremos creando un método con la anotación GetMapping. Esto nos permite definir el path para consumir este servicio de tipo GET el cual será expuesto por la anotación RestController:
- Ahora moveremos nuestro endpoint que realiza el createUser, esto lo haremos creando un método con la anotación PostMapping. Esto nos permite definir el path para consumir este servicio de tipo POST el cual será expuesto por la anotación RestController:
- Por el momento vamos a comentar todo nuestro código y funciones que tenemos en nuestro método MAIN:
- Al final debemos tener lo siguiente:
Recordemos que la anotación SpringBootApplication ya tiene embebida la anotación de MVC, por lo que no es necesario definirla explicitamente.
- Probemos levantar nuestro servicio:
- A continuación, hagamos una prueba con el siguientes request:
Request:
localhost:8080/api/createUser
{
"user":"[email protected]",
"password":"pass2"
}
- A continuación, hagamos una prueba con el siguiente request:
Request:
localhost:8080/api/login?[email protected]&password=pass2
- Probemos implementar JAXB. Comenzaremos creando 2 bean, el primero para usarlo como objecto dentro del ResponseEntity y el segundo es el Bean que tendra las anotaciones de JAXB:
- Ahora necesitamos crear un nuevo controller para poder hacer el llamado:
- En el mismo controller tenemos los metodos marshall y unmarshall, con ellos podemos manejar de manera sencilla el XML:
- Probemos si nuestro servicio funciona, debemos crear un nuevo metodo GET en postman para llamar a nuestro controller:
localhost:8080/jaxb/getXML
- Al realizar el llamado vamos a ver que el servicio crea el archivo book.xml y el se guardan los datos que definimos en el ejemplo:
- Si todo fue bien, debemos ver la siguiente respuesta:
La practica consiste crear el resto de Endpoint comentados en el archivo LearningJavaApplication. Puede utilizar la implementación preferida, sin embargo, recuerda utilizar las anotaciones previas.