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.
11. 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
20. 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.
21. 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
22. 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:
27. ANALIZANDO SPRINGBOOT
directorio con los fuentes.
directorio para test
recursos
archivo de construcción y dependencias
SpringBootApplication
JUnitTest -SpringBootTest
Propiedades de la aplicación
28. 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)
30. @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)
32. 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
34. 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!
35. 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
36. 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.
38. 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.
40. 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
41. 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.*
44. 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
45. 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
48. 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)
49. 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.
52. 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
53. 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