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

 

 

Entradas relacionadas:

  • No hay entradas relacionadas.

One Response to “Qué es Spring Boot”

  1. gorlok Says:

    Spring Boot le ha dado nueva vida a Spring, es una herramienta muy buena. Otra alternativa es JEE7, que desde las últimas versiones de JEE, es todo convención sobre configuración, cada vez más simple, y sin XML ni nada. Se puede crear una aplicación JEE7 en minutos, y lo mejor, el WAR apenas ocupa unos pocos KB, porque las librerías con las implementaciones las provee el servidor de aplicaciones (Wildfly, Payara, Tomee, etc). Con Spring, todas las librerías deben estar dentro del WAR y hay que incluirlas una y otra vez en cada build, lo que puede ser cientos de MBs adicionales. En el caso de usar Docker para los servicios y aplicaciones, puede ser prohibitivo, porque la diferencia es importante, cuando una imagen docker de una aplicación JEE7 es ínfima. Desde ya, Spring suele estar más en la cresta de la ola, y rápidamente incorpora las últimas tendencias, a diferencia de JEE que tiene tiempos más lentos. Así que hay escenarios para cada framework, cada uno tiene sus ventajas y desventajas, y ambos son muy potables hoy día. Como ejemplo de cómo crear rápidamente una aplicación JEE7, te comparto este video de Adam Bien https://www.youtube.com/watch?v=HhroyiYFmjc que de paso tiene otros videos muy interesantes.
    Hay que agradecer que los frameworks actuales han mejorado y mucho, ya sea con Spring Boot como en otras alternativas, y que no dejan de crecer. Ahora tenemos herramientas mucho más productivas que ahorran mucho tiempo de configuración y cableado, para poder enfocarnos en el código productivo de negocio.

Leave a Reply