Entradas

Integración con un servicio web SOAP

Imagen
O convertir un XML a una objeto Java. SOAP (Simple Object Access Protocol) es un protocolo estándar que define cómo dos sistemas pueden comunicarse entre si por medio del intercambio de datos XML. Este protocolo deriva de un protocolo llamado XML-RPC. El paquete Spring Web Services proporciona todas las herramientas para el tratamiento de una comunicación SOAP. Es capaz de interpretar el fichero WSDL (Web Service Description Language - definición de los servicios ofrecidos por el servcio web). <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web-services</artifactId> <version>1.4.0.RELEASE</version> </dependency> Esta dependencia proporciona las siguientes funcionalidades: Creación y lectura de XML. Mapeo de componentes XML a objetos Java, y viceversa. Liberías para parsear XML. Es Contract-first only, lo que tiene sentido, ya que siempre partiremos del WSDL definido por el servi

Convertir un JSON a una objeto java

Imagen
Para la conectar una respuesta JSON a una clase, Java cuenta con una libería llamada Jackson que serializa o mapea objetos java a JSON y viceversa. <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> Despues en la función que necesitemos inyectamos el parseador. @Bean public CommandLineRunner run(RestTemplate restTemplate) throws Exception { return args -> { Joke joke = restTemplate.getForObject( "https://official-joke-api.appspot.com/random_joke", Joke.class); log.info(joke.toString()); }; } Por supuesto tenemos un objeto Joke con los atributos de la respuesta JSON.

Microservicios en Spring Boot

Imagen
Los microservicios son un patrón arquitectónico que divide una aplicación en una colección de servicios pequeños, débilmente acoplados y que operan juntos para lograr un objetivo común. Como funcionan de forma independiente, se pueden agregar, eliminar o actualizar sin interferir con otras aplicaciones. Sus características principales: Diversidad tecnológica : cada microservicio puede estar diseñado en un lenguaje diferente o usar diferentes tipos de bases de datos. Aislamiento de fallos : si un proceso falla no compromete el resto de servicios, que quizá puedan seguir funcionando si no todos, la gran mayoría. Agile framework : Perfecto para equipos de desarrollo independientes y trabajos en paralelo, también para su deployment. Escalabilidad : se pueden incrementar o reducir componentes precisos dependiendo de la demanda. Spring Cloud & Eureka Eureka, creado por Netflix es responsable de llevar el registro y descubrimiento de microservicios. Spring ha incorporado E

GraphQL APIs

Imagen
REST es la manera más conocida de proporcionar datos de un servidor, aunque sus respuestas son muy rígidas. GraphQL es un lenguaje de queries para APIs, que al igual que REST es usado para cargar datos de un servidor a un cliente, pero que es muy eficiente y flexible porque permite al cliente especificar exactamente lo que necesita. Para integrar GraphQL en Spring Boot estas librerías son necesarias (deben añadirse manualmente): graphql-spring-boot-starter - Este starter es muy útil porque configura automáticamente un Servlet GraphQL al que puedes acceder a través de /graphql. graphql-java-tools - Una librería de ayuda para parsear el esquema de GraphQL. GraphQL schema (.graphqls) Define los data points que ofrece la API. Incluye los tipos de datos, las relaciones entre ellos y las operaciones que podemos realizar sobre ellos. type Location { id: ID! name: String! address: String! } type Query { findAllLocations: [Location]! } type Mutation { newLocation(name: Str

Persistencia de Datos en Spring Boot

Imagen
Spring Boot utiliza por defecto MyBatis como ORM, una librería que nos permite mapear nuestra base de datos con los objetos de nuestra aplicación, simplificando enormemente la gestión de la base de datos y reduciendo nuestro código fuente. Siempre mejor opción que atacar a la base de datos directamente utilizando la API de Java JDBC (Java Database Connectivity) o incluso su solución ORM conocida como Java Persistence API (JPA). La manera que tenemos en Spring Boot de asociar datos de la base de datos a un objeto en particular, es a través de MyBatis Mappers , que son creados como beans que podrán ser inyectados mas adelante en nuestros servicios que los necesiten. MyBatis Mappers Ejemplo que se explica sólo, donde de nuevo las anotaciones juegan un papel determinante: @Mapper public interface UserMapper { @Select("SELECT * FROM USERS WHERE username = #{username}") User getUser(String username); } En este ejemplo la query pregunta por todos los campos, el nombre

RESTful en Spring Boot

Imagen
En este otro post hablo de los servicios web, este solo contiene un ejemplo de una estructura de directorios y las anotaciones empleadas en Spring Boot. Las anotaciones pricipales en Spring Boot son: @Entity para las clases entidad, que seran propagadas a la base de datos. Generalmente una entidad corresponde a una tabla de la base de datos. @RestController establece una clase como REST API. Es la combinación de @Controller y @ResponseBody. @GetMapping para manejar peticiones GET, funciona como un atajo de @RequestMapping. Dog.java @Entity public class Dog { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String name; private String breed; private String origin; public Dog(Long id, String name, String breed, String origin) { this.id = id; this.name = name; this.breed = breed; this.origin = origin; } public Dog(String name, String breed) { this.name = name; this.

Testeando con JUnit

Imagen
La forma más eficiente de escribir tests es hacerlo antes de escribir el código, y este enfoque es lo que se conoce como Test-Driven Development (TDD), escribir un test o serie de tests antes de empezar el desarrollo de una nueva feature, da al desarrollador un objetivo claro de qué desarrollar. Conocido como "red then green", esta filosofía indica que antes del desarrollo de esa nueva funcionalidad, todos los test fallarán, y al terminar todos pasarán. Dentro de todos los tipos de pruebas a los que podemos someter nuestro código, las pruebas unitarias son la más básicas y utilizadas. Pruebas Unitarias/Unit Tests Son los tests más básicos y de más bajo nivel, que sirven para chequear un componente en particular de la aplicación, como por ejemplo chequear que un método de nuestro código maneja adecuadamente los datos que se le pasan como parámetros, o que el estado de un objeto se actualiza correctamente después de que el método de actualización se haya invocado. Unit Test