Dec 10

Qué es Spring Boot

Hace unos meses estuve jugueteando con Spring Boot, pero el ponerme a hacer código a lo loco mirando la documentación y algunos tutoriales, no me dio una idea de lo que realmente es Spring Boot.

La idea de Spring Boot es que podamos hacer aplicaciones Spring, pero con cero configuración. No tenemos que hacer ningún fichero de configuración, ni ficheros XML. A Spring Boot, usando una herramienta propia, le decimos qué tipo de aplicación queremos (web, con jpa, con postgres, etc) y él solo nos genera una proyecto maven/gradle con todo lo necesario y que se autoconfigura en el arranque.

Por ejemplo, si decimos que queremos una aplicación web, Spring Boot automáticamente nos embebe un Tomcat y nos lo configura con el servlet de Spring. Por supuesto, si no nos gusta la configuración por defecto (no queremos Tomcat, por ejemplo), sí podemos cambiar cosas para usar jetty, jboss o el que nos guste.

¿y cómo hace esta magia Spring Boot?

Pues añadiendo en nuestro proyecto Maven/Gradle dependencias estilo "spring-boot-starter-****". Por ejemplo, si añadimos la dependencia "spring-boot-starter-web", es la que se encarga de añadir todo lo necesario para embeber un Tomcat y el que nos crea (sin que ni siquiera lo veamos en nuestro proyecto) el fichero web.xml de nuestra aplicación correctamente configurado para Spring. Si añadimos "spring-boot-starter-data-jpa" junto con la dependencia de algún driver de base de datos, como por ejemplo h2, es Spring Boot el que automáticamente en el arranque nos configurará automáticamente los DataSource para esa base de datos y todo lo necesario para acceder a esa base de datos usando JPA.

La magia de Spring Boot va incluso más allá. Una vez añadida la dependencia "spring-boot-starter-data-jpa" y la del driver de nuestra base de datos, sólo tenemos que crear nuestras clases de base de datos con las consabidas anotaciones @Entity, @Id, etc …  y una interfaz (adecuadamente anotada) que herede de la interfaz de Spring CrudRepository<MyBean, Long>, siendo MyBean la clase persistente que nos hemos creado y cuyo id es un Long. Y listo, no tenemos que implementar la interfaz, Spring Boot lo hace por nosotros en tiempo de ejecución, dándonos todos los métodos típicos de consulta/inserción/modificación y borrado de MyBean en base de datos.

Dentro de nuestro proyecto Spring Boot, en src/main/resources hay un fichero, en principo vacío, de nombre applicacion.properties. En ese fichero podemos poner properties propias de Spring Boot para cambiar las configuraciones por defecto de Spring Boot. Un ejemplo tiípico es cambiar el puerto por defecto 8080 de tomcat por otro. Basta añadir en ese fichero la linea server.port=8000 siendo 8000 el puerto que queremos en vez de 8080. Aquí tienes todas las posibles propiedades a poner y valores por defecto.

 

En fin, estoy con ello todavía, pero promete mucho y merece la pena echarle un ojo. Lo comentado aquí es un pequeño resumen de lo que se dice en este vídeo