Introducción a Spring boot

Comenzamos una serie de cuatro artículos que van a tener como objetivo sacar el máximo partido a la plataforma Spring boot, que nació precisamente con la pretensión de simplificar el trabajo a los desarrolladores, y para ello realiza auto-configuración (convención en vez de configuración) de los componentes. Usa Spring JavaConfig y se puede configurar toda la plataforma sin necesidad de usar XML.

Las aplicaciones de Spring boot son muy sencillas:

% block:blockquote
% items:
% text:```
>
<code>import org.springframework.boot.;
import org.springframework.boot.autoconfigure.
;
import org.springframework.web.bind.annotation.*;
% endblock

@SpringBootApplication
public class Example {
public static void main(String[] args) throws Exception {
SpringApplication.run(Example.class, args);
}
}</code>

> ```

Estructura del código

Ateniéndonos a la estructura hay tres formas de organizar el código de los microservicios:

  1. Proyectos separados
  2. Un solo proyecto multimódulo
  3. Un solo proyecto sin módulos

La elección de uno u otro depende del grado de acoplamiento de los microservicios. Por norma general:

Para seguir esta serie de artículos se va a proceder a crear en un proyecto especial en Git [podéis descargarlo aquí], donde iremos completando la documentación. En un primer momento, hay que establecer un componente de arquitectura, y luego un proyecto multimódulo para los servicios concretos (que veremos más adelante en la siguiente entrega).

Componente de arquitectura

Para simplificar la programación se ha creado un componente de arquitectura de forma que sea más sencillo desarrollar los microservicios.

Este componente resuelve el tema de la seguridad, la configuración de los websockets, caché de datos, y se puede configurar el accesos al modelo de usuario con JDBC o MongoDB, etc. Esto facilita el desarrollo evitando la repetición de código.

% block:blockquote
% items:
% text:```
>
<code><span class="gp">$ </span>git clone https://git.paradigma.local/git/ArquitecturaMicroServiciosSprinBoot.git arquitecture
<span class="gp">$ </span><span class="nb">cd </span>arquitecture
<span class="gp">$ </span>gradle bootRun</code>

> ```
% endblock

MicroS2 code4

La seguridad se basa en anotaciones @PreAuthorize y @PostFilter:

<code>@PreAuthorize("hasRole('admin') && @permissions.allowAny('model', 'read')") 
@PostFilter("@permissions.allow(filterObject.id, 'model', 'read')") 
public List<Model> getAll() { 
    ... 
}</code>

Está definido un bean en Spring llamado permissions que se encarga de evaluar si se dispone de permisos para una entidad e ID dados. Se puede adaptar la nomenclatura para ajustarla a cada caso concreto, por ejemplo:

% block:blockquote
% items:
% text:&gt; &lt;code&gt;@permissions.allow(filterObject.id, 'es.paradigma.inditex.factura', 'imprimir') @permissions.allow(filterObject.id, 'es.paradigma.inditex.albaran', 'facturar') @permissions.allow(filterObject.id, 'es.paradigma.inditex.prenda', 'mover')&lt;/code&gt; &gt;
% endblock

Para autenticarse tan solo hay que hacer login sobre la url https://www.paradigmadigital.com/api/v1/login con el body {"demo", "abcd123"} esto nos devuelve un head "X-AUTH-TOKEN" con el accessToken para poder hacer invocaciones en todos los servicios del proyecto.

Para configurar el acceso a la base de datos que se usa para validar los usuarios se hace uso del archivo arquitectura.yml en donde se guardan todas las propiedades de configuración de la arquitectura común de microservicios.

Hasta aquí esta primera parte en la que hemos intentado conocer cómo funciona Spring boot. En la próxima entrega montaremos un proyecto multimódulo con la herramienta Gradle.

Analizamos a fondo Microservicios con Spring Boot en 4 entregas:

Cuéntanos qué te parece.

Enviar.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete