Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Springboot Overview

SpringBoot 1.4

  • Be the first to comment

Springboot Overview

  1. 1. @josebovet Overview #javaTalksChile 29/08/16
  2. 2. Agenda: • Que es SpringBoot • Objetivo • Características • Instalación • Starters • Testing • Desarrollo Web • Actuator • Empaquetamiento • Consola
  3. 3. QUE ES SPRINGBOOT
  4. 4. QUE ES SPRINGBOOT? ▸ Proyecto de la plataforma/ecosistema Spring. ▸ Objetivo es simplificar, acelerar y facilitar el desarrollo de aplicaciones. ▸ Permite crear tanto aplicaciones web, como stand-alone.
  5. 5. OBJETIVO SPRING
  6. 6. DISPONER DE FUNCIONALIDAD OUT-OF-BOX EN FUNCIÓN DE LA NATURALEZA DEL PROYECTO.
  7. 7. NOS PROVEE UN ÚNICO PUNTO DE ENFOQUE (EN OPOSICIÓN A LA GRAN COLECCIÓN DE PROYECTOS DE SPRING-*)
  8. 8. DISEÑADO PARA QUE PUEDA PONERSE EN FUNCIONAMIENTO TAN PRONTO COMO SEA POSIBLE. $gradle bootRun $gradle package $java -jar libs/app.jar
  9. 9. PROVEE HERRAMIENTAS QUE PERMITEN MONITOREAR Y AUDITAR NUESTRAS APLICACIONES.
  10. 10. PROPORCIONA UNA GAMA DE CARACTERÍSTICAS NO FUNCIONALES COMUNES A PROYECTOS. Contenedor Servlets Seguridad Acceso a datos PersistenciaMétricas, Controles de salud Manejo de Sesiones Externalizar configuración
  11. 11. CARACTERÍSTICAS
  12. 12. PROVEE SERVIDORES WEB EMBEBIDOS, COMO TOMCAT, JETTY O UNDERTOW DIRECTAMENTE (SIN NECESIDAD DE DESPLEGAR ARCHIVOS WAR).
  13. 13. JAR SOBRE WAR… Filosofía
  14. 14. SIMPLIFICA LA CONFIGURACIÓN Y DEPENDENCIAS MEDIANTE:
  15. 15. AGRUPAR DEPENDENCIAS CLASIFICADAS POR TIPOS(FUNCIONALIDAD)
  16. 16. Menos XML Más Java Config
  17. 17. COMO UTILIZARLO
  18. 18. REQUISITOS. ▸ Se puede usar tanto en Gradle 1.12+ como Maven 3.2+ ▸ ** Usaremos Gradle para la presentación** ▸ Por defecto Spring Boot 1.4.0 requiere >= Java 7 ▸ Spring Framework 4.3.3 o superior. ▸ Editores Eclipse, IntelliJ, Netbeans.
  19. 19. INSTALACIÓN SPRING BOOT-CLI. ▸ posh-gem basado en PowerShell para Windows. ▸ SDKMan! para Linux/OSX. ▸ sdk install springboot ▸ spring -version ▸ Spring CLI v1.4.0.RELEASE ▸ spring run app.java http://sdkman.io
  20. 20. EJEMPLO EXPRESS SPRING BOOT CLI Aplicación web muy simple que se puede utilizar para probar la instalación. Crear un archivo llamado app.groovy:
  21. 21. EJECUTANDO LA APLICACIÓN DESDE EL CLIENTE spring run app.groovy Abrimos la dirección
  22. 22. Y AHORA QUE?
  23. 23. http://start.spring.io
  24. 24. GENERAMOS NUESTRO PROYECTO CON SUS DEPENDENCIAS. y hay mas!
  25. 25. ANALIZANDO SPRINGBOOT directorio con los fuentes. directorio para test recursos archivo de construcción y dependencias SpringBootApplication JUnitTest -SpringBootTest Propiedades de la aplicación
  26. 26. JAVATALKSAPPLICATION.CLASS La clase SpringApplication es la encargada de arrancar(método run ) la aplicación mediante la instancia y carga del contexto adecuado. Por defecto se cargan 2 contextos: • AnnotationConfigApplicationContext • AnnotationConfigEmbeddedWebApplicationContext(si fuese o no una app web)
  27. 27. @SPRINGBOOTAPPLICATION La anotación @SpringBootApplication es equivalente a usar. @Configuration @EnableAutoConfiguration y @ComponentScan Equivalentes
  28. 28. @SPRINGBOOTAPPLICATION @Configuration Anotación de Spring para marcar una clase como de configuración. @EnableAutoConfiguration Esta anotación indica a Spring Boot que intente configurar Spring, en base a las dependencias declaradas en los jars que han agregado. @ComponentScan Permite a Spring buscar componentes marcados en este u otros paquetes.(basePackage)
  29. 29. TESTING
  30. 30. TESTING CON SPRING-TEST(Y MVC) • spring-boot-starter-test provee dependencias útiles de pruebas. • JUnit • spring-test • Mockito, • Hamcrest • Spock • AssertJ • @SpringApplicationConfiguration como alternativa a @ContextConfiguration para implementar las características de Spring Boot
  31. 31. TESTING APLICACIONES WEB
  32. 32. TESTING APLICACIONES WEB • Soporte de RestTemplate para testear Rest mediante TestRestTemplate • Permite levantar un contexto web,definiendo un puerto random con webEnvironment=WebEnvironment.RANDOM_PORT) Puerto Aleatorio Soporte RestTemplate Soporte de Asserts!
  33. 33. TESTING MOCK • Cuando se inyecta un campo, la instancia del mock también es inyectada • Soporte de Mocito mediante @MockBean , se puede utilizar para simular un bean dentro del Application Context. • Los mocks son restablecidos después de la ejecución cada método del test. Soporte Mockito
  34. 34. TESTING MVC @WebMvcTest autoconfigura la infraestructura para SpringMVC y se limita a escanear los siguientes beans. • @Controller@ControllerAdvice, @JsonComponent • Filter,WebMvcConfigurer y HandlerMethodArgumentResolver * @Component no son escaneados cuando se ocupa esta anotación. Una buena práctica, es limitar a un controlador por test, y combinarlo con un @MockBean para proveer una implementación para los componentes colaboradores. Un controlador Provee el soporte para testar MVC, es el punto de entrada para el lado del servidor.
  35. 35. DESARROLLO WEB
  36. 36. DESARROLLO APLICACIONES WEB • Spring Boot esta diseñado para que pueda ponerse en funcionamiento tan pronto como sea posible, arrancar aplicaciones de manera fácil y rápida. • Incluye un servidores embebidos, lo que permite levantar rápido una aplicación con todas las características web. • Todo el soporte para trabajar con MVC. • Resolvedores de vistas. • Soporte recursos estáticos • Templates Engines. • Manejo de sesiones. • Soporte Internacionalización • Acceso a datos • Soporte para crear sitios RESTful. • Seguridad y control de acceso.
  37. 37. WEB TEMPLATES ENGINES ENGINES SOPORTADOS POR LA AUTO-CONFIGURACIÓN  Groovy Markup Templates Deprecado con Spring 4.3
  38. 38. SERVIDORES EMBEBIDOS • Ofrece contenedores de servlets por defecto como Tomcat y Jetty. • Permite customizar el contenedor mediante las propiedades de la clase ServerProperties.java Puerto Especifico! Contexto y nombre de la aplicación
  39. 39. CUSTOMIZACIÓN PROGRAMÁTICA Se puede customizar mediante la clase EmbeddedServletContainerFactory o implementando la Interfaz EmbeddedServletContainerCustomizer Puerto Especifico! También se pueden customizar las propiedades de un contenedor especifico del contenido como server.tomcat.*
  40. 40. AGREGANDO RECURSOS ESTÁTICOS. • Fáciles de usar: classpath:/static/** • Variadas alternativas: • classpath:/public/** • classpath:/resources/** • classpath:/META_INF/resources/** • classpath:/resources/templates/**
  41. 41. DEBUG.LOG(“LOGGING”);
  42. 42. LOGGING • Provee archivos configuración por defecto para 4 frameworks. 1. Logback 2. Log4j 3. Log4j2 4. java.util.Logging • Starters con Logback proveen una salida en colores. • INFO es el nivel por defecto. • DEBUG se puede agregar usando la opción —debug • Los niveles del log pueden ser customizados mediante la configuración • logging.level.cl.javatalks=TRACE
  43. 43. LOGGING • Mediante el archivo application.properties se pueden definir niveles del log. • Según la implementación, se pueden personalizar las trazas definiendo el archivo de configuración para cada uno de ellos. • Logback : logback.xml • Log4j : log4j.properties ó log4j.xml • Java Util Logging: logging.properties
  44. 44. AGREGANDO COMPONENTES Y COMPORTAMIENTOS AUTO-CONFIGURABLES. http://start.spring.io
  45. 45. ACTUATOR AGREGANDO FEATURES PARA PRODUCCIÓN
  46. 46. ES LA MANERA MAS SIMPLE DE AGREGAR FUNCIONALIDADES PARA MONITOREAR LA SALUD DE NUESTRA APLICACIÓN. EsAgrega características no funcionales comunes para la aplicación, las expone mediante endpoint para interactuar con ellas.(REST/JMX)
  47. 47. AGREGANDO ACTUATOR • Añade a nuestros proyectos una serie de endPoints para consultar y monitorear la aplicación. maven gradle • Se puede agregar seguridad a los endpoints.
  48. 48. ENDPOINT DISPONIBLES
  49. 49. EMPAQUETAMIENTO
  50. 50. WAR • Permite genera war ejecutables. • java -jar app.war • Soporte para generar un war en un contenedor “normal”, para eso necesitamos extender SpringBootServletInitializer en vez de la clase SpringApplication
  51. 51. JAR • Permite generar jars ejecutables, estos contienen las dependencias generadas conocidos como “Fat Jars”. • gradle build // gradle jar • java -jar build/libs/java-talks-0.0.1-SNAPSHOT.jar
  52. 52. DEPLOY EN LA NUBE
  53. 53. #graci@s
  54. 54. Preguntas

×