Como saben la versión de Spring boot 2 fue liberada hace poco y en Geeks México ya empezamos a hacer pruebas con esta nueva versión.
Paso 1 Configuración
El primer paso será configurar nuestro proyecto, para esto tendremos que configurar los siguientes puntos:
- Proyecto padre: El primer paso será agregar el proyecto padre de Spring boot 2 el cual definirá todas las versiones a utilizar en las starter dependencies.
- Agregar dependencias: Agregaremos la dependencia spring-boot-starter-web para crear un microservicio como ejemplo.
- Configurar plugins: Se definirán 2 plugins, el primero para definir la versión de Java a utilizar (Recordemos que Spring boot 2 solo funciona con Java 8 o superior) y el segundo para generar un fat jar (Una aplicación que contiene un tomcat en si mismo).
pom.xml
Con la configuración anterior en el pom.xml los 3 puntos mencionados quedarán configurados correctamente.
Paso 2 Creando un Controller
El siguiente paso será crear un controller, en este ejemplo se utilizará Spring mvc:
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @author raidentrance * */ @RestController public class SampleController { @RequestMapping("/") public String home() { return "Somos Geeks!"; } }
En el controller anterior devolverá la respuesta Somos Geeks! cuando se ejecute la url http://localhost:8080/.
Paso 3 Creando la clase aplicación
Como sabemos Spring boot necesita una clase que contenga un método main para iniciar la aplicación:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author raidentrance * */ @SpringBootApplication public class SpringBootSampleApplication { public static void main(String[] args) { SpringApplication.run(SpringBootSampleApplication.class, args); } }
Al ejecutar la clase SpringBootSampleApplication se ejecutará un servidor tomcat y desplegará nuestra aplicación en el.
Paso 4 Agregar un banner a nuestra aplicación (Opcional)
En la versión anterior de Spring boot el banner era un archivo .txt que se mostraba cuando el servidor iniciaba, en la nueva versión de Spring boot 2 tenemos la posibilidad de poner un gif como banner, para hacerlo solo debemos poner un archivo con formato .gif, .txt, .jpg o .png con el nombre banner.
En nuestro ejemplo utilizaremos el siguiente gif:
Paso 5 ejecutar nuestra aplicación
El siguiente paso será ejecutar nuestra aplicación, para hacerlo tenemos las siguientes opciones:
- Ejecutar el comando mvn spring-boot:run
- Ejecutar la clase que contiene el método main SpringBootSampleApplication
- Ejecutar el jar generado utilizando java -jar nombre-de-la-aplicacion.jar
Al ejecutar cualquiera de las opciones anteriores veremos la siguiente salida:
.#############: &##&ooooooooooo&######. &##oooooooooooooooooooo####: ##ooooooooooooooooooooooooooo### :##oooooooooooooooooooooooooooooo8# .#&ooooooooooooooooooooooooooooooooo#: #&oooooooooooooooooooooooooooooooooo##: #o&#.@oooooooooooooooooooooooo#@:oooo##. #&& @#@ooooooooooooooooooooo@@# &#ooo### #@ @###@oooooooooooooooooo&@###: @oooo## #@:###:@ooooooooooooooooo&@@###@ @oooo## #&###@ @ooooooooooooooooo# .###@ @oooo## &.####@@oooooooooooooooo@ @###@.@oooo## ##@@###@oooooooooooooooo@#####@.@ooooo#& #ooo&@@#ooooooooooooooooo&#####@@:ooooo#* :&#:oooooooooooooooooooooo@#@@oooooooo&# *##o#oooooooooooooooooooooooooooooooo#& .#o8oo#&ooooooooooooooooooo####oooo&# ##o#&oo###:ooooo&&#####oo#ooooooo# :#&oo#&oooooooooo8##ooooooooooooo## .##&o8#####&oooooo&##oooooooooo## :ooooo: ####8ooooooooo:##oo#####&&8&#####:.#oooooooooo### ooooooo***:ooooooooooooooo#ooooooooooooooo#....ooooooooooo#&&# .**oooooo:***:o&########8&o##&ooooooooooooo&&.....ooooooooooo#oo&# ****oooo*****ooo ##oooooooooooo#oo#......oooooooooo#&#oo#. ***oooo*****:oo :ooooooooooo##&o&......#ooooooooo#:..#o## **:o***** 😮 .##oooo&###:oooo#.......&oooo##&......#&### *********..: ###&&&ooooo##&oo#..........#&.........#o#:o#& ****** * &#oooooooooooo#8&:.....................:o#&oo#: ***:oo #&ooooooooooooo##:.....................:&#ooo8# *. #ooooooooooooooo#:.....................:#&oooo#& #&oooooooooooooo&#.....................##ooooo## ##oooooooooooooo&#....................##oooooo## :#oooooooooooooo##....................##oooooo## ##oooooooooooo#...................##ooooooo### ##oo:ooooo#8#..................&#:ooooooo### ##o#o###&#&##...............:##ooooo&&8###. ##&ooooooooo# :##########&. ooooooo# ##&&oooo&## #o### .#* &# :#& #### &### 2018-03-07 15:36:40.630 INFO 43046 --- [ main] c.r.SpringBootSampleApplication : Starting SpringBootSampleApplication on m-C02RV1WXG8WP.lan with PID 43046 (/Users/maagapi/Documents/Github/spring-boot2/target/classes started by maagapi in /Users/maagapi/Documents/Github/spring-boot2) 2018-03-07 15:36:40.632 INFO 43046 --- [ main] c.r.SpringBootSampleApplication : No active profile set, falling back to default profiles: default 2018-03-07 15:36:40.664 INFO 43046 --- [ main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@4842439e: startup date [Wed Mar 07 15:36:40 CST 2018]; root of context hierarchy 2018-03-07 15:36:41.381 INFO 43046 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2018-03-07 15:36:41.403 INFO 43046 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2018-03-07 15:36:41.403 INFO 43046 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.28 2018-03-07 15:36:41.413 INFO 43046 --- [ost-startStop-1] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/maagapi/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.] 2018-03-07 15:36:41.481 INFO 43046 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2018-03-07 15:36:41.481 INFO 43046 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 820 ms 2018-03-07 15:36:41.587 INFO 43046 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/] 2018-03-07 15:36:41.590 INFO 43046 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] 2018-03-07 15:36:41.590 INFO 43046 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 2018-03-07 15:36:41.591 INFO 43046 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*] 2018-03-07 15:36:41.591 INFO 43046 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*] 2018-03-07 15:36:41.833 INFO 43046 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@4842439e: startup date [Wed Mar 07 15:36:40 CST 2018]; root of context hierarchy 2018-03-07 15:36:41.892 INFO 43046 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto public java.lang.String com.raidentrance.controller.SampleController.home() 2018-03-07 15:36:41.897 INFO 43046 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 2018-03-07 15:36:41.898 INFO 43046 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 2018-03-07 15:36:41.926 INFO 43046 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2018-03-07 15:36:41.926 INFO 43046 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2018-03-07 15:36:41.954 INFO 43046 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2018-03-07 15:36:42.055 INFO 43046 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2018-03-07 15:36:42.096 INFO 43046 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2018-03-07 15:36:42.100 INFO 43046 --- [ main] c.r.SpringBootSampleApplication : Started SpringBootSampleApplication in 4.479 seconds (JVM running for 6.89)
Una vez que el servidor se inició correctamente podemos ejecutar nuestro endpoint accediendo a la url http://localhost:8080/ , mostrando la siguiente salida:
Somos Geeks!
Puedes encontrar el código completo en el siguiente enlace https://github.com/raidentrance/spring-boot2/tree/master/src/main.
Si te gusta el contenido y quieres enterarte cuando realicemos un post nuevo síguenos en nuestras redes sociales https://twitter.com/geeks_mx y https://www.facebook.com/geeksJavaMexico/.
Autor: Alejandro Agapito Bautista
Twitter: @raidentrance
Contacto:raidentrance@gmail.com