Crear un Microservicio con Spring Boot

En este artículo veremos los pasos necesarios para crear microservicios Spring Boot Java, desplegarlo en el servidor Apache Tomcat y acceder a los endpoints con un cliente REST. En el ejemplo desarrollaremos un servicio con una operación POST para alta de clientes y una operación GET para listar los clientes ingresados.

Paso 1: crear un microservicio con Spring Boot Generando el proyecto con Spring Web starter

Para generar la estructura básica de la aplicación con las dependencias necesarias acceder a la página de Spring Initializr

Crear un Microservicio con Spring Boot starter

En cada sección de la página seleccionar/ingresar los valores que se indican a continuación:

ProjectMaven Project
LanguageJava
Spring Boot2.6.7 (default)

Project Metadata

Groupcom.jcodepoint
Artifactcustomer-service
Namecustomer-service
Description
Package namecom.jcodepoint.customer-service
PackagingJar
Java11

Dependencias

Spring Web

Hacer click en GENERATE. Se descargará un archivo .zip con el proyecto generado.

Paso 2: importar el proyecto en Eclipse

En la carpeta de descargas tendríamos que encontrar el archivo customer-service.zip, que contiene todos los archivos del proyecto. Descomprimir este archivo en la carpeta de nuestro workspace.

La estructura del proyecto generado es la siguiente:

Crear un Microservicio con Spring Boot estructura proyecto

Ahora debemos generar los archivos de proyecto para Eclipse. Desde una terminal y ubicados en el directorio raíz del proyecto ejecutar el siguiente comando:

mvn eclipse:eclipse

Hacer click derecho en el workspace de Eclipse para desplegar el menú contextual y seleccionar la opción Import…

import eclipse 1

En el diálogo que se despliega seleccionar Existing Projects into Workspace (dentro de la carpeta General) y luego click en Next:

import eclipse 2

En el siguiente diálogo, en la opción Select root directory seleccionar la carpeta raíz del proyecto. Opcionalmente, también se puede seleccionar el Working set para el proyecto:

Crear un Microservicio con Spring Boot import eclipse 3

Finalizada la importación del proyecto, se debería ver en el workspace de Eclipse como sigue:

Crear un Microservicio con Spring Boot eclipse workspace

Paso 3: implementar el API de Clientes

Nuestro ejemplo consistirá en un servicio con dos endpoints para alta y listado de clientes respectivamente para lo cual crearemos en primer lugar la clase Customer como entidad cliente en nuestro modelo:

package com.jcodepoint.customerservice;

public class Customer {
	private Integer id;
	private String firstName;
	private String lastName;
	private String location;
	
	public Integer getId() {
		return id;
	}
	
	public void setId(Integer id) {
		this.id = id;
	}
	
	public String getFirstName() {
		return firstName;
	}
	
	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}
	
	public String getLastName() {
		return lastName;
	}
	
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	
	public String getLocation() {
		return location;
	}
	
	public void setLocation(String location) {
		this.location = location;
	}
}

Para terminar de crear un microservicio con Spring Boot, crearemos la clase CustomerController para implementar nuestro servicio RESTful:

package com.jcodepoint.customerservice;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class CustomerController {

    private static Map<Integer, Customer> customers = new HashMap<>(); 	
	
    @PostMapping("/customer")  
    public String addCustomer(@RequestBody Customer customer) { 
        customers.put(customer.getId(), customer); 
        return ""; 
    } 	
	
    @GetMapping("/customer")  
    public List<Customer> getCustomers() { 
        return new ArrayList<Customer>(customers.values()); 
    }    
	
}

Notar que:

  • Se utiliza un HashMap para almacenar las entidades que se ingresen mediante la operación POST.
  • La anotación @RestController marca a la clase como servicio RESTful.
  • La clase cuenta con dos métodos para implementar operaciones POST y GET, para alta y consulta, respectivamente.

Paso 4: ejecutar y consumir el microservicio

A los efectos de este ejemplo vamos a desplegar el microservicio en nuestro ambiente de desarrollo y a acceder a los endpoints utilizando un cliente REST.

Para levantar la aplicación ejecutamos el siguiente comando de Maven desde la terminal:

mvn spring-boot:run

El anterior comando desplegará nuestra aplicación en el servidor Apache Tomcat embebido.

Para acceder a los endpoints podemos utilizar cualquier cliente REST como Postman, Insomnia, etc.

Consumir servicio POST

A continuación se muestra la URL de acceso y el JSON del body con los datos del cliente a ingresar:

Crear un Microservicio con Spring Boot post request

La respuesta del servicio muestra status 200 OK, por lo tanto los datos fueron almacenados en el HashMap:

Crear un Microservicio con Spring Boot post response

Consumir servicio GET

A continuación se muestra la URL de acceso a la operación de consulta. Esperamos que la misma liste las entidades almacenadas en el HashMap:

Crear un Microservicio con Spring Boot get request

La respuesta del servicio muestra status 200 OK y un array con la entidad cargada en la llamada al servicio anterior:

Crear un Microservicio con Spring Boot get response

Conclusión

En este artículo hemos visto los pasos necesarios para crear y probar un API REST. El siguiente paso es documentar nuestra API para facilitar el acceso a los usuarios. En este artículo explicamos cómo documentar API con Swagger.

Además, se debe considerar agregarle seguridad para restringir el acceso a los endpoints en caso de que el API sea publicada en Internet. Esto lo haremos con JSon Web Token (JWT) y lo explicamos en este artículo.


Te puede interesar

Palabras reservadas en Java

Las palabras reservadas en Java son un componente crucial de la sintaxis del lenguaje para formar los bloques básicos del lenguaje.

Seguir leyendo →

Crear un arquetipo de Maven

Crear un arquetipo de Maven permite generar nuevos proyectos de similares caracteríticas a partir de una plantilla.

Seguir leyendo →

Seguridad en Rest API con JWT

En este artículo explicamos cómo agregar una capa de seguridad en Rest API con JWT para permitir el acceso solo a los usuarios autorizados.

Seguir leyendo →

Documentar un API REST con Swagger

En este artículo se demostrará como documentar un API REST con swagger utilizando la implementación SpringFox de la especificación Swagger 2.

Seguir leyendo →