Spring Boot Actuator

logo springSpring Boot Actuator es una librería que proporciona out-of-the-box una amplia colección de funcionalidades de monitorización y administración para aplicaciones desarrolladas con Spring Boot accesibles mediante endpoints vía REST y/o con JMX Beans. En este tutorial aprenderemos a utilizar Spring Boot Actuator con la versión 2.1 de Spring Boot. Téngase en cuenta que hay numerosas e importantes diferencias en el módulo Actuator entre Spring Boot 1.x y Spring Boot 2.x

Seguir leyendo

Spring REST: Securización BASIC y JDBC con Spring Security

logo spring

En este tutorial veremos cómo utilizar Spring Security para definir la autenticación y autorización de una Api REST. Como sistema de autenticación usaremos una base de datos relacional accesible mediante JDBC, y las credenciales deberán proporcionarse mediante el estándar BASIC. De este modo las credenciales viajan codificadas en Base 64 en el header de la petición y, aunque no están cifradas, en la práctica sólo deberíamos permitir llamadas a la Api mediante HTTPS. Este mecanismo es sencillo de implementar aunque presenta el problema de que el cliente tiene que proporcionar la contraseña en cada petición por lo que esta deberá ser almacenada de algún modo. Sistemas más seguros y potentes, pero también un poco más difíciles de implementar, se basan en el uso de tokens (por ejemplo siguiendo JWT) o del protocolo OAuth, aunque en ciertos escenarios la autenticación BASIC puede ser suficiente.

Seguir leyendo

Spring Boot: Gestión de errores en aplicaciones web y REST

logo springEn este tutorial haremos un breve repaso con un enfoque eminentemente práctico de las mejores opciones que tenemos para la gestión de excepciones en aplicaciones web, tanto “tradicionales” como REST, desarrolladas con Spring MVC. Se hará especial hincapié en las funcionalidades implementadas de forma específica por Spring Boot que facilitarán nuestro trabajo.

Seguir leyendo

Diseño Android: Menu lateral con Navigation Drawer

logo android

Navigation Drawer es un elemento de interfaz definido por Material Design consistente en el típico menú lateral deslizante, generalmente desde la izquierda. Suele encontrase en la pantalla principal de la app y contar con un botón para desplegarlo aunque también puede ser abierto con un gesto de desplazamiento. Aunque ha sido un tanto denostado en los últimos tiempos y en algunas aplicaciones está siendo reemplazado por la barra Bottom Navigation se sigue utilizando ampliamente.

Seguir leyendo

Testing en Spring Boot con JUnit 4\5. Mockito, MockMvc, REST Assured, bases de datos embebidas.

Última actualización: 02/03/2019

logo springEn el tutorial Introducción a Spring Boot: Aplicación Web con servicios REST y Spring Data JPA se construye una pequeña aplicación web que muestra en pantalla los registros de una tabla de una base de datos MySQL a la que se accede a través de Spring Data JPA, y que también dispone de una pequeña api REST. Sin embargo, falta un elemento vital como son los tests. Para suplir esta carencia, en el presente tutorial voy a mostrar cómo configurar tests de integración en Spring Boot utilizando esa misma aplicación así como algunas opciones y librerías que pueden ser de gran ayuda. Los tests se desarrollarán con JUnit 4 pero al final del tutorial veremos cómo utilizar también JUnit 5.

Seguir leyendo

Creación de validadores con Bean Validation\Hibernate Validator

logo java

Una vez que hemos empezado a utilizar la especificación Bean Validation para definir restricciones sobre los atributos de clases Java, en algún momento nos encontraremos con la necesidad de validar restricciones que no sean proporcionadas ni por el estándar Bean Validation ni por Hibernate Validator y que no pueden definirse utilizando expresiones regulares con @Pattern. Por ejemplo, realizar alguna comprobación en una base de datos.

Seguir leyendo

Validaciones de atributos con Bean Validation\Hibernate Validator

logo java

El objetivo de la especificación Bean Validation es establecer un estándar para la definición e implementación de restricciones en clases Java del tipo “el atributo nombre no puede ser nulo”, “el atributo cantidad debe ser un número positivo mayor que 10”, etc. La aplicación más evidente de estas restricciones es la realización de validaciones sobre los datos de entrada de un sistema, ya sean proporcionados por un usuario a través de un formulario o de forma automática por otro proceso. Al tratarse de un estándar compatible con Java SE puede ser utilizado en cualquier aplicación e integrado fácilmente con Spring, Struts 2 o JSF. Se puede encontrar un ejemplo de integración en Spring Boot en el tutorial Introducción a Spring Boot: Aplicación Web con servicios REST y Spring Data JPA.

Seguir leyendo

SQL nativo con JPA e Hibernate

logo hibernate

Tal y como vimos en el tutorial Spring JDBC Template: simplificando el uso de SQL, a pesar de la existencia de herramientas de mapeo ORM tales como Hibernate y estandarizadas con la especificación JPA, existen escenarios en los que necesitamos trabajar directamente con SQL nativo. El caso más habitual suele ser la ejecución de consultas complejas que deben ser optimizadas o bien son difíciles de implementar de forma eficiente con el ORM.

Seguir leyendo

Diseño Android: Formulario en cuadro de diálogo con Fragment

logo android

En el tutorial Diseño Android: Cuadros de diálogo de selección vimos cómo crear un cuadro de diálogo de selección encapsulado en un fragment y también echamos un vistazo rápido a las características de los cuadros de diálogo en Android. En el presente tutorial haremos lo mismo pero en lugar de mostrar un listado de elementos a seleccionar haremos lo propio con un pequeño formulario. En concreto, implementaremos el siguiente formulario con dos campos de texto.

Seguir leyendo

Introducción a Spring Boot: Aplicación Web con servicios REST y Spring Data JPA

Última actualización: 22/03/2019

logo springEn el tutorial Persistencia en BD con Spring: Integrando JPA, c3p0, Hibernate y EHCache, vimos de forma práctica los pasos a seguir para configurar una aplicación Maven que integre Spring con JPA, utilizando Hibernate como implementación. No es difícil, pero resulta tedioso tener que replicar esta configuración cada vez que empecemos un proyecto nuevo y la configuración puede complicarse si por ejemplo vamos a desarrollar un proyecto web completo y necesitamos también utilizar otros módulos de Spring tales como MVC, Data, Security, etc.

Seguir leyendo