J Spring Boot Basics Perry PDF
J Spring Boot Basics Perry PDF
Descubra cómo utilizar los iniciadores, los criterios y la estructura de archivos ejecutable JAR
de Spring Boot para escribir rápidamente aplicaciones basadas en Spring que "simplemente se
ejecutan".
Spring Boot es una infraestructura ligera que elimina la mayor parte del trabajo de configurar las
aplicaciones basadas en Spring. En este tutorial, aprenderá cómo utilizar los iniciadores, los criterios y
la estructura de archivos ejecutable JAR de Spring Boot para crear rápidamente aplicaciones basadas
en Spring que "simplemente se ejecutan".
Después de una breve introducción a Spring Boot, le guiaré a través del proceso de configurar y
ejecutar dos aplicaciones de Spring Boot: una sencilla aplicación "Hola, Mundo" y una aplicación de
servicios web Spring MVC RESTful ligeramente más compleja. Observe que, para mis aplicaciones
de ejemplo, utilizo la versión 1.5.2 de Spring Boot. Le recomiendo utilizar la versión 1.5.2 o superior,
aunque, los ejemplos deberían funcionar para cualquier versión posterior a la 1.5.
Requisitos previos
Para sacar el máximo provecho del tutorial, se debe estar cómodo utilizando Java™ Development Kit,
versión 8 (JDK 8). También será necesario estar familiarizado con Eclipse IDE, Maven y Git.
© 版权所有 IBM 公司 2017 商标
Aspectos básicos de Spring Boot 第 1 页,共 23
developerWorks® ibm.com/developerWorks/cn/
Todo eso suena genial, ¿verdad? Pero, ¿cómo funciona exactamente Spring Boot?
Primero, es intuitivo
Spring Boot tiene criterios. Ésta es sólo otra forma de decir que Spring Boot tiene valores
predeterminados razonables, para que usted pueda desarrollar una aplicación rápidamente a través de
esos valores usados habitualmente.
Por ejemplo, Tomcat es un contenedor web muy popular. De forma predeterminada, una aplicación
web de Spring Boot utiliza un contenedor Tomcat incorporado.
Segundo, es personalizable
Una infraestructura intuitiva no es de mucha utilidad si no es posible cambiar sus criterios. Es posible
personalizar fácilmente una aplicación de Spring Boot para que coincida con sus gustos, tanto en la
configuración inicial como, después, en el ciclo de desarrollo.
Por ejemplo, si usted prefiere Maven, puede cambiar fácilmente los valores de <dependencia> de su
archivo POM para reemplazar el valor predeterminado de Spring Boot. Usted lo realizará más adelante
en el tutorial.
• spring-boot-starter-web se utiliza para desarrollar servicios web de RESTful con Spring MVC y
Tomcat como el contenedor de aplicaciones incorporado.
• spring-boot-starter-jersey es una alternativa a spring-boot-starter-web que utiliza Apache
Jersey en vez de Spring MVC.
• spring-boot-starter-jdbc se utiliza para el agrupamiento de conexiones JDBC. Se basa en la
implementación del grupo de conexiones JDBC de Tomcat.
La página de referencia de iniciadores de Spring Boot hace una lista con muchos más iniciadores. Eche
un vistazo para ver el POM y las dependencias para cada iniciador.
Configuración automática
Si se lo permite, Spring Boot utilizará su anotación @EnableAutoConfiguration para configurar
automáticamente su aplicación. La configuración automática se basa en el JARS de su ruta de clases y
en cómo ha definido sus beans:
Eche un vistazo: ponga en marcha su aplicación de Spring Boot con la opción --debug y en la
consola se generará un informe de configuración automática.
• Spring Boot utiliza los JAR que se haya especificado que estén presentes en la CLASSPATH para
formar una opinión acerca de cómo configurar un determinado comportamiento automático.
Por ejemplo, si usted tiene el JAR de la base de datos H2 en su ruta de clases y no ha configurado
otros beans de DataSource su aplicación se configurará automáticamente con una base de datos
en memoria.
• Spring Boot utiliza la manera en que usted define los beans para configurarse automáticamente.
Por ejemplo, si usted anota sus beans de JPA con @Entity, Spring Boot configurará
automáticamente el JPA de forma que no se necesite un archivo persistence.xml .
El über JAR de Spring Boot no es un concepto nuevo. Ya que Java no proporciona una forma estándar
para cargar los JAR anidados, los desarrolladores llevan años utilizando herramientas como el plug-in
Apache Maven Shade para desarrollar JAR "sombreados". Un JAR sombreado simplemente contiene
los archivos .class de todos los JAR dependientes de la aplicación. Pero, a medida que la complejidad
de las aplicaciones aumenta y las dependencias se incrementan, los JAR sombreados pueden presentar
dos problemas:
1. Colisiones de nombres, donde dos clases de JAR diferentes tienen el mismo nombre.
2. Problemas con la versión de las dependencias, donde dos JAR utilizan diferentes versiones de la
misma dependencia.
Spring Boot resuelve esos problemas definiendo un diseño especial del archivo JAR donde los propios
JARs se anidan dentro del Über JAR. El soporte para herramientas de Spring (por ejemplo, el plug-
in spring-boot-maven ) después desarrolla el über JAR ejecutable para seguir ese diseño (no sólo
desempaqueta y reempaqueta los archivos .class , como con un JAR sombreado). Cuando se ejecuta
el JAR ejecutable, Spring Boot utiliza un cargador de clases especial para manejar las clases que están
dentro de los JARs anidados.
¡Vamos a entrar directamente con este y vamos a crear un nuevo proyecto de Maven!
Haga clic en Siguiente, después, vuelva a hacer clic en Siguiente en el diálogo posterior (no se
muestra).
• ID de Grupo: com.makotojava.learn
• ID de Artefacto: HelloSpringBoot
• Versión: 1.0-SNAPSHOT
• Paquete: com.makotojava.learn.hellospringboot
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class App {
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
return args -> {
};
}
}
Después, cree una clase nueva llamada HelloRestController en el mismo paquete que Aplicación
que se parezca a esto:
package com.makotojava.learn.hellospringboot;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloRestController {
@RequestMapping("/hola")
public String hello() {
return "Hello. All your base are belong to us.";
}
}
2. Cree el POM
Modifique el POM que ha creado por el asistente del Nuevo Proyecto para que se parezca al Listado 1.
<artifactId>HelloSpringBoot</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>HelloSpringBoot</name>
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Las líneas de 10 a 14 muestran el elemento <parent>, que específica el POW del objeto primario
de Spring Boot y que contiene las definiciones para los componentes comunes. No es necesario
configurar estos manualmente.
Las líneas de 25 a 30 dicen a Maven que utilice el plug-in spring-boot-maven-plugin para generar la
aplicación de Spring Boot.
No es tanta configuración, ¿verdad?Observe que no hay XML. Para la configuración que falta
utilizaremos anotaciones de Java.
¡Hablemos acerca de la intuición! Aunque, en defensa de Spring Boot, estos son los valores
predeterminados de las aplicaciones web más populares—al menos, las que yo conozco y utilizo todo
el tiempo.
Pero, ¿recuerda que dije que Spring Boot es personalizable? Si se quiere utilizar una pila tecnológica
diferente, puede sobrescribir fácilmente los valores predeterminados de Spring Boot.
Perder el <parent>
Verificar las dependencias: Si alguna vez necesitase ver exactamente cuáles son las dependencias
que está incorporando el iniciador de Spring Boot que usted está utilizando, visite la página de
referencia de iniciadores de Spring Boot.
Es importante puntualizar que el elemento <parent> hace mucha magia genial de Maven, así que, si
usted tiene una buena razón para no utilizarlo, proceda con precaución. Asegúrese de que añade la
ejecución del objetivo de reempaquetar a spring-boot-maven-plugintal como se explica aquí.
Desarrolar en Eclipse
Para ejecutar el desarrollo de Maven en Eclipse, haga clic derecho en el archivo POM y elija Ejecutar
como > Desarrollo de Maven. En el campo de texto Objetivos, ingrese limpiar y empaquetar, después,
haga clic en el botón Ejecutar.
.
.
[INFO] ------------------------------------------------------------------------
[INFO] CONSTRUCCIÓN EXITOSA
[INFO] ------------------------------------------------------------------------
[INFO] Tiempo total: 2,440 s
[INFO] Acabada a las: 2017-04-16T10:17:21-05:00
[INFO] Memoria Final: 30M/331M
[INFO] ------------------------------------------------------------------------
Para ejecutar el desarrollo de Maven desde la línea de comandos, abra una ventana terminal de Mac o
un indicador de comandos de Windows, navegue hasta el directorio del proyecto HelloSpringBoot , y
ejecute el comando:
mvn clean package
El resultado de Spring Boot contiene una "Pantalla de Bienvenida" basada en texto (líneas de 2 a
7) junto con otro resultado, que es similar al listado siguiente. Sólo muestro algunas líneas, para
proporcionar una idea de lo que se debería ver cuando se ejecuta la aplicación:
Si la aplicación se inicia correctamente, la última línea del resultado de Spring Boot contendrá las
palabras "Aplicación Iniciada" (línea 13). Ahora, usted está listo para emplear su aplicación, que es lo
siguiente que hará.
5. Emplear la aplicación
Es posible ejecutar el único método REST de HelloSpringBoot abriendo un navegador y presionando la
siguiente URL:
http://localhost:8080/hello
Si usted ve el texto "Hello, All your base are belong to us" (una página de inicio para videojuego Zero
Wing), ¡sabrá que la aplicación funciona!
Observe que Tomcat es el contenedor predeterminado del servidor web incorporado. Ahora, vamos a
suponer que en vez de Tomcat quiere utilizar Jetty. Todo lo que tiene que hacer es cambiar la sección
<dependencias> del POM (sólo pegue las líneas 5 a 15 del Listado 3 sobre la línea 19 del cambio de 清
单 1):
Observe a continuación que las dependencias de Maven para Tomcat ya no están (gracias a las líneas 5
a 10 del Listado 3), y se han reemplazado con las dependencias para Jetty (líneas de 12 a 15).
De hecho, hay más dependencias de Jetty de las que entrarían en una única captura de pantalla, pero
están todas ahí, y ya no están las dependencias de Tomcat. ¡Pruébelo y véalo por usted mismo!
SpringBootDemo
SpringBootDemo es una clase envoltorio de Spring Boot que envuelve una sencilla aplicación POJO
basada en Spring llamada oDoT. (Como ToDo al revés... ¿lo pilla?) La idea es recorrer el proceso de
desarrollar una aplicación que sea más compleja que un sencillo Hola, Mundo. También aprenderá a
envolver una aplicación existente con Spring Boot.
Para clonar el repositorio odotCore, abra una ventana terminal de Mac o una línea de comandos de
Windows, navegue hasta carpeta raíz en la que quiere que el código resida y ejecute el comando:
git clone https://github.com/makotogo/odotCore
Observe que los dos proyectos se subordinan inmediatamente al directorio raíz de la aplicación.
Después, usted importará el código a su área de trabajo.
En el siguiente diálogo, utilice el botón Examinar para buscar el directorio raíz. Los dos proyectos que
se clonaron en el paso anterior deberían aparecer en el diálogo, tal como se muestra aquí:
Haga clic en Finalizar para importar los proyectos a su área de trabajo de Eclipse. Después desarrollará
el JAR ejecutable.
En Eclipse, haga clic derecho en el proyecto odotCore. Elija Ejecutar como > Compilación de Maven y
especifique las metas limpiar e instalar . La meta instalar instalará el archivo JAR odotCore-1.0-
SNAPSHOT.jar en su repositorio local de Maven. Desde ahí, estará disponible para ser obtenida como
dependencia cuando se ejecute la compilación SpringBootDemo Maven.
Después de que la compilación odotCore Maven se ejecute correctamente, haga clic derecho en
el proyecto SpringBootDemo, elija Ejecutar como > Compilación de Maven y especifique las metas
limpiar y empaquetar .
Nota: El proyecto odotCore contiene varias pruebas unitarias. Aunque siempre digo que nunca
(jamás) hay que saltarse las pruebas unitarias, es posible configurar la Configuración de Ejecución
que construye el proyecto odotCore en Eclipse para que se las salte (en el diálogo Configuración
de Ejecución existe un recuadro de selección para eso).
Ahora, acomódese para asombrarse mientras Spring Boot ejecuta la aplicación. Cuando vea el texto
"Aplicación Iniciada" estará listo para emplear la aplicación.
5. Emplear la aplicación
Como prueba rápida para asegurarnos de que la aplicación está funcionando correctamente, abra una
ventana del navegador e ingrese el siguiente URL:
http://localhost:8080/CategoryRestService/FindAll
Esto accede al método FindAll de CategoryRestService y devuelve todos los objetos de la Categoría
de la base de datos en formato JSON.
También se puede emplear la aplicación a través de SoapUI. Aquí no demostraré cómo hacerlo, pero,
en el video de este tutorial oriento sobre el proceso.
La Tabla 1 muestra los servicios y los métodos que hay dentro de cada servicio para SpringBootDemo.
Le recomiendo que estudie el código, que juegue un poco con él y que tenga una mejor sensación de
cómo funciona Spring Boot.
Conclusión
En este tutorial le he presentado los problemas que Spring Boot soluciona y un poco sobre cómo
funciona. Después, he enseñado cómo configurar y ejecutar una sencilla aplicación de Spring Boot
llamada HelloSpringBoot. Finalmente, he mostrado cómo se construye y emplea una aplicación de
servicios web de Spring MVC RESTful con Spring Boot.
相关主题
• ¿Qué es Spring Boot?
• Cómo implementar una aplicación de Spring Boot en IBM Liberty y en WAS 8.5
© 版权所有 IBM 公司 2017
(www.ibm.com/legal/copytrade.shtml)
商标
(www.ibm.com/developerworks/cn/ibm/trademarks/)