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

En cada sección de la página seleccionar/ingresar los valores que se indican a continuación:
Project | Maven Project |
Language | Java |
Spring Boot | 2.6.7 (default) |
Project Metadata
Group | com.jcodepoint |
Artifact | customer-service |
Name | customer-service |
Description | |
Package name | com.jcodepoint.customer-service |
Packaging | Jar |
Java | 11 |
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:

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…

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

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:

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

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:

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

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:

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

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.
Crear un arquetipo de Maven
Crear un arquetipo de Maven permite generar nuevos proyectos de similares caracteríticas a partir de una plantilla.
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.
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.