SlideShare a Scribd company logo
1 of 56
Download to read offline
@josebovet
Overview
#javaTalksChile
29/08/16
Agenda:
• Que es SpringBoot
• Objetivo
• Características
• Instalación
• Starters
• Testing
• Desarrollo Web
• Actuator
• Empaquetamiento
• Consola
QUE ES SPRINGBOOT
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.
OBJETIVO SPRING
DISPONER DE FUNCIONALIDAD OUT-OF-BOX
EN FUNCIÓN DE LA NATURALEZA DEL
PROYECTO.
NOS PROVEE UN ÚNICO PUNTO DE ENFOQUE
(EN OPOSICIÓN A LA GRAN COLECCIÓN DE
PROYECTOS DE SPRING-*)
DISEÑADO PARA QUE PUEDA PONERSE
EN FUNCIONAMIENTO TAN PRONTO
COMO SEA POSIBLE.
$gradle bootRun
$gradle package
$java -jar libs/app.jar
PROVEE HERRAMIENTAS QUE PERMITEN
MONITOREAR Y AUDITAR NUESTRAS
APLICACIONES.
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
CARACTERÍSTICAS
PROVEE SERVIDORES WEB EMBEBIDOS, COMO
TOMCAT, JETTY O UNDERTOW DIRECTAMENTE (SIN
NECESIDAD DE DESPLEGAR ARCHIVOS WAR).
JAR SOBRE WAR…
Filosofía
SIMPLIFICA LA CONFIGURACIÓN
Y DEPENDENCIAS MEDIANTE:
AGRUPAR DEPENDENCIAS CLASIFICADAS
POR TIPOS(FUNCIONALIDAD)
Menos XML
Más Java Config
COMO UTILIZARLO
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.
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
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:
EJECUTANDO LA APLICACIÓN DESDE EL CLIENTE
spring	run	app.groovy
Abrimos la dirección
Y AHORA QUE?
http://start.spring.io
GENERAMOS NUESTRO PROYECTO
CON SUS DEPENDENCIAS.
y hay mas!
ANALIZANDO SPRINGBOOT
directorio con los fuentes.
directorio para test
recursos
archivo de construcción y dependencias
SpringBootApplication
JUnitTest -SpringBootTest
Propiedades de la aplicación
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)
@SPRINGBOOTAPPLICATION
La anotación @SpringBootApplication es equivalente a usar.
@Configuration
@EnableAutoConfiguration y
@ComponentScan
Equivalentes
@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)
TESTING
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
TESTING APLICACIONES WEB
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!
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
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.
DESARROLLO WEB
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.
WEB TEMPLATES ENGINES
ENGINES SOPORTADOS POR LA AUTO-CONFIGURACIÓN
 Groovy Markup Templates
Deprecado con Spring 4.3
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
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.*
AGREGANDO RECURSOS
ESTÁTICOS.
• Fáciles de usar: classpath:/static/**
• Variadas alternativas:
• classpath:/public/**
• classpath:/resources/**
• classpath:/META_INF/resources/**
• classpath:/resources/templates/**
DEBUG.LOG(“LOGGING”);
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
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
AGREGANDO COMPONENTES Y
COMPORTAMIENTOS AUTO-CONFIGURABLES.
http://start.spring.io
ACTUATOR
AGREGANDO FEATURES PARA PRODUCCIÓN
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)
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.
ENDPOINT DISPONIBLES
EMPAQUETAMIENTO
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
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
DEPLOY EN LA NUBE
#graci@s
Preguntas

More Related Content

What's hot

Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring FrameworkHùng Nguyễn Huy
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to MavenVadym Lotar
 
Spring boot
Spring bootSpring boot
Spring bootsdeeg
 
OWASP Top 10 Web Application Vulnerabilities
OWASP Top 10 Web Application VulnerabilitiesOWASP Top 10 Web Application Vulnerabilities
OWASP Top 10 Web Application VulnerabilitiesSoftware Guru
 
Introduction to Spring Framework and Spring IoC
Introduction to Spring Framework and Spring IoCIntroduction to Spring Framework and Spring IoC
Introduction to Spring Framework and Spring IoCFunnelll
 
An Overview of Deserialization Vulnerabilities in the Java Virtual Machine (J...
An Overview of Deserialization Vulnerabilities in the Java Virtual Machine (J...An Overview of Deserialization Vulnerabilities in the Java Virtual Machine (J...
An Overview of Deserialization Vulnerabilities in the Java Virtual Machine (J...joaomatosf_
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring FrameworkASG
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring FrameworkDineesha Suraweera
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework tola99
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API07.pallav
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot IntroductionJeevesh Pandey
 

What's hot (20)

Spring Boot
Spring BootSpring Boot
Spring Boot
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
An Introduction to Maven
An Introduction to MavenAn Introduction to Maven
An Introduction to Maven
 
Spring boot
Spring bootSpring boot
Spring boot
 
OWASP Top 10 Web Application Vulnerabilities
OWASP Top 10 Web Application VulnerabilitiesOWASP Top 10 Web Application Vulnerabilities
OWASP Top 10 Web Application Vulnerabilities
 
Introduction to spring boot
Introduction to spring bootIntroduction to spring boot
Introduction to spring boot
 
Introduction to Spring Framework and Spring IoC
Introduction to Spring Framework and Spring IoCIntroduction to Spring Framework and Spring IoC
Introduction to Spring Framework and Spring IoC
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Java 9 Features
Java 9 FeaturesJava 9 Features
Java 9 Features
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
Spring User Guide
Spring User GuideSpring User Guide
Spring User Guide
 
An Overview of Deserialization Vulnerabilities in the Java Virtual Machine (J...
An Overview of Deserialization Vulnerabilities in the Java Virtual Machine (J...An Overview of Deserialization Vulnerabilities in the Java Virtual Machine (J...
An Overview of Deserialization Vulnerabilities in the Java Virtual Machine (J...
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
Maven
MavenMaven
Maven
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
 
Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot Introduction
 

Viewers also liked

Principios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwarePrincipios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwareJose Patricio Bovet Derpich
 
Springboot and camel
Springboot and camelSpringboot and camel
Springboot and camelDeepak Kumar
 
Microservices with Spring Boot
Microservices with Spring BootMicroservices with Spring Boot
Microservices with Spring BootJoshua Long
 
SpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSLSpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSLSunghyouk Bae
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudEberhard Wolff
 
Cloud Foundry a Developer's Perspective
Cloud Foundry a Developer's PerspectiveCloud Foundry a Developer's Perspective
Cloud Foundry a Developer's PerspectiveDave McCrory
 
Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Gunith Devasurendra
 
Spring boot 5장 cli
Spring boot 5장 cliSpring boot 5장 cli
Spring boot 5장 cliChoonghyun Yang
 
Level 3 REST Makes Your API Browsable
Level 3 REST Makes Your API BrowsableLevel 3 REST Makes Your API Browsable
Level 3 REST Makes Your API BrowsableMatt Bishop
 
Agile 2014 - Personal Kanban
Agile 2014 - Personal KanbanAgile 2014 - Personal Kanban
Agile 2014 - Personal KanbanDerek Huether
 

Viewers also liked (20)

Principios diseño del software
Principios diseño del software Principios diseño del software
Principios diseño del software
 
Principios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del softwarePrincipios de diseño de la arquitectura del software
Principios de diseño de la arquitectura del software
 
Springboot and camel
Springboot and camelSpringboot and camel
Springboot and camel
 
Microservices with Spring Boot
Microservices with Spring BootMicroservices with Spring Boot
Microservices with Spring Boot
 
POO1501 - Composición java
POO1501 - Composición javaPOO1501 - Composición java
POO1501 - Composición java
 
SpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSLSpringBoot with MyBatis, Flyway, QueryDSL
SpringBoot with MyBatis, Flyway, QueryDSL
 
Diseño de la interfaz de usuario
Diseño de la interfaz de usuarioDiseño de la interfaz de usuario
Diseño de la interfaz de usuario
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
 
Apache Servicemix
Apache ServicemixApache Servicemix
Apache Servicemix
 
POO1501 - Composición java
POO1501 - Composición javaPOO1501 - Composición java
POO1501 - Composición java
 
Cloud Foundry a Developer's Perspective
Cloud Foundry a Developer's PerspectiveCloud Foundry a Developer's Perspective
Cloud Foundry a Developer's Perspective
 
GitHub y el software libre
GitHub y el software libreGitHub y el software libre
GitHub y el software libre
 
Conociendo Nuestro Fua interno
Conociendo Nuestro Fua internoConociendo Nuestro Fua interno
Conociendo Nuestro Fua interno
 
Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)
 
Java 8 - New Features
Java 8 - New FeaturesJava 8 - New Features
Java 8 - New Features
 
Telephonic etiquettes
Telephonic  etiquettesTelephonic  etiquettes
Telephonic etiquettes
 
MyBatis
MyBatisMyBatis
MyBatis
 
Spring boot 5장 cli
Spring boot 5장 cliSpring boot 5장 cli
Spring boot 5장 cli
 
Level 3 REST Makes Your API Browsable
Level 3 REST Makes Your API BrowsableLevel 3 REST Makes Your API Browsable
Level 3 REST Makes Your API Browsable
 
Agile 2014 - Personal Kanban
Agile 2014 - Personal KanbanAgile 2014 - Personal Kanban
Agile 2014 - Personal Kanban
 

Similar to Springboot Overview

Spring Fácil: Cambios en el framework con Spring Boot
Spring Fácil: Cambios en el framework con Spring BootSpring Fácil: Cambios en el framework con Spring Boot
Spring Fácil: Cambios en el framework con Spring BootBelatrix Software
 
Modulo Jee Practica Pos Fp Une
Modulo Jee Practica  Pos Fp UneModulo Jee Practica  Pos Fp Une
Modulo Jee Practica Pos Fp UneMarcos Jara
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicasGerardo Linares
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJSRodrigo Pimentel
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event managerIvan Ortega
 
Symfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony FrameworkSymfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony Frameworkexcedesoft
 
Lp II clase03 - Entornos de Desarrollo
Lp II clase03 - Entornos de DesarrolloLp II clase03 - Entornos de Desarrollo
Lp II clase03 - Entornos de DesarrolloAngelDX
 
SpringFramework Overview
SpringFramework OverviewSpringFramework Overview
SpringFramework Overviewzerovirus23
 
Introduccion a elastic beanstalk aws roadshow bogota mexico
Introduccion a elastic beanstalk   aws roadshow bogota mexicoIntroduccion a elastic beanstalk   aws roadshow bogota mexico
Introduccion a elastic beanstalk aws roadshow bogota mexicoAmazon Web Services LATAM
 
LenguajeJavaSpringBootDesarrolloweb.pptx
LenguajeJavaSpringBootDesarrolloweb.pptxLenguajeJavaSpringBootDesarrolloweb.pptx
LenguajeJavaSpringBootDesarrolloweb.pptxcarrilloja98
 
Mejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareMejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareJose Luis Bugarin Peche
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightParadigma Digital
 

Similar to Springboot Overview (20)

Spring Fácil: Cambios en el framework con Spring Boot
Spring Fácil: Cambios en el framework con Spring BootSpring Fácil: Cambios en el framework con Spring Boot
Spring Fácil: Cambios en el framework con Spring Boot
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Modulo Jee Practica Pos Fp Une
Modulo Jee Practica  Pos Fp UneModulo Jee Practica  Pos Fp Une
Modulo Jee Practica Pos Fp Une
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicas
 
Turbogears
TurbogearsTurbogears
Turbogears
 
Maven Overview
Maven OverviewMaven Overview
Maven Overview
 
Semana 2 Configuración entorno de desarrollo
Semana 2   Configuración entorno de desarrolloSemana 2   Configuración entorno de desarrollo
Semana 2 Configuración entorno de desarrollo
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event manager
 
Symfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony FrameworkSymfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony Framework
 
Lp II clase03 - Entornos de Desarrollo
Lp II clase03 - Entornos de DesarrolloLp II clase03 - Entornos de Desarrollo
Lp II clase03 - Entornos de Desarrollo
 
SpringFramework Overview
SpringFramework OverviewSpringFramework Overview
SpringFramework Overview
 
Introduccion a elastic beanstalk aws roadshow bogota mexico
Introduccion a elastic beanstalk   aws roadshow bogota mexicoIntroduccion a elastic beanstalk   aws roadshow bogota mexico
Introduccion a elastic beanstalk aws roadshow bogota mexico
 
LenguajeJavaSpringBootDesarrolloweb.pptx
LenguajeJavaSpringBootDesarrolloweb.pptxLenguajeJavaSpringBootDesarrolloweb.pptx
LenguajeJavaSpringBootDesarrolloweb.pptx
 
Mejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareMejores a nuestros proyectos de Software
Mejores a nuestros proyectos de Software
 
S1-DS2.pptx
S1-DS2.pptxS1-DS2.pptx
S1-DS2.pptx
 
Modulo 1
Modulo 1Modulo 1
Modulo 1
 
Spring boot et. al. para el impaciente
Spring boot et. al. para el impacienteSpring boot et. al. para el impaciente
Spring boot et. al. para el impaciente
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring Insight
 

Recently uploaded

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 

Recently uploaded (11)

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 

Springboot Overview

  • 2. Agenda: • Que es SpringBoot • Objetivo • Características • Instalación • Starters • Testing • Desarrollo Web • Actuator • Empaquetamiento • Consola
  • 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.
  • 6.
  • 7. DISPONER DE FUNCIONALIDAD OUT-OF-BOX EN FUNCIÓN DE LA NATURALEZA DEL PROYECTO.
  • 8. NOS PROVEE UN ÚNICO PUNTO DE ENFOQUE (EN OPOSICIÓN A LA GRAN COLECCIÓN DE PROYECTOS DE SPRING-*)
  • 9. DISEÑADO PARA QUE PUEDA PONERSE EN FUNCIONAMIENTO TAN PRONTO COMO SEA POSIBLE. $gradle bootRun $gradle package $java -jar libs/app.jar
  • 10. PROVEE HERRAMIENTAS QUE PERMITEN MONITOREAR Y AUDITAR NUESTRAS APLICACIONES.
  • 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
  • 13. PROVEE SERVIDORES WEB EMBEBIDOS, COMO TOMCAT, JETTY O UNDERTOW DIRECTAMENTE (SIN NECESIDAD DE DESPLEGAR ARCHIVOS WAR).
  • 15. SIMPLIFICA LA CONFIGURACIÓN Y DEPENDENCIAS MEDIANTE:
  • 17.
  • 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:
  • 23. EJECUTANDO LA APLICACIÓN DESDE EL CLIENTE spring run app.groovy Abrimos la dirección
  • 26. GENERAMOS NUESTRO PROYECTO CON SUS DEPENDENCIAS. y hay mas!
  • 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)
  • 29. @SPRINGBOOTAPPLICATION La anotación @SpringBootApplication es equivalente a usar. @Configuration @EnableAutoConfiguration y @ComponentScan Equivalentes
  • 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.
  • 39. WEB TEMPLATES ENGINES ENGINES SOPORTADOS POR LA AUTO-CONFIGURACIÓN  Groovy Markup Templates Deprecado con Spring 4.3
  • 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.*
  • 42. AGREGANDO RECURSOS ESTÁTICOS. • Fáciles de usar: classpath:/static/** • Variadas alternativas: • classpath:/public/** • classpath:/resources/** • classpath:/META_INF/resources/** • classpath:/resources/templates/**
  • 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
  • 46. AGREGANDO COMPONENTES Y COMPORTAMIENTOS AUTO-CONFIGURABLES. http://start.spring.io
  • 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
  • 54. DEPLOY EN LA NUBE