SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
Javi Rodriguez
@jarodllo
• Ingeniero Software
• Co-Organizador Grupo Java Valencia
@vlc_jug
De zero a 100 con
Spring Boot
Spring Cloud, JTwig y algo más….
¿Qué vamos a ver?
1. Contexto de Spring Boot
2. Introducción a Spring Boot
3. Requisitos mínimos
4. Spring Boot
5. Ejemplos
6. Arquitectura MicroServicios
7. Spring Cloud
Esquema conceptual básico
PHIL WEBB How not to hate Spring in 2016
Contexto
• Spring IO Spring One 2013
Punto de encuentro desarrolladores
• Cohesionada y versionda para el desarrollo
de aplicaciones modernas
• Spring IO es 100% opensource, liviano y
modular
• Spring IO Foundation y Spring IO Execution
IO Coordination
Introducción
• Presentado en SpringOne 2013
• 1.4.0
• 1.3.3 current
• Es “opinionated framework”
• Funcionalidad out-of-the-box
• Herramienta para empezar aplicaciones de forma
rápida
• Forma parte del ecosistema SPRING
• Permite cambiar los valores por defecto rápidamente
• Spring Boot < > Spring Framework
• Diferentes objetivos
• Diferentes dependencias
• Diferente release schedule
• Nos ofrece herramientas de monitorización
• health checking
• metrics endpoints
• Evita configurar multiples XML
¿Cómo empezamos?
• Java >= “1.6”
• Maven >=3 || Gradle >=1.6
• Spring Initializr
• Spring Boot CLI
spring init -dweb,data-jpa,h2,thymeleaf --build maven valenciaJug
https://start.spring.io/ SPRING INITIALIZR
Starters
• Conjunto de dependencias
• recomendadas, consistentes
• spring-boot-starter-* vs *-spring-boot-starter
• Disponible para web, batch, integration, data, mail,
redis, social-facebook, …
• spring-boot-starter-actuator
• spring-boot-starter-remote-shell
Dependencias transitivas
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>
Dependencias transitivas
Spring Boot Actuator
Production-ready features
• Spring Boot incluye funcionalidad monitorizar y
controlar tu application
• HTTP endpoints, JMX, remote (SSH or Telnet)
• /mappings, /health, /env, /beans
Externalizar Configuración
• Ficheros YAML que permite un formato jerárquico.
• SnakeYAML —> via spring-boot-starter.
#application.yml
valenciajug:
greeting: hello world!
@ConfigurationProperties(prefix = "valenciajug")

public class Greeting {



private String greeting;



public String getGreeting() {

return greeting;

}

public void setGreeting(String greeting) {

this.greeting = greeting;

}

@Configuration

@EnableConfigurationProperties(Greeting.class)

public class MyConfiguration {

}
@Autowired

private Greeting greeting;
@RestController
class ThisWillActuallyRun {
@RequestMapping("/")
String hello() {
"Hello ValenciaJug!”;
}
}
$ spring run app.groovy
@RestController
class ThisWillActuallyRun {
@RequestMapping("/")
String hello() {
"Hello ValenciaJug!”;
}
public static void main(String[] args) {
SpringApplication.run(ThisWillActuallyRun.class, args);
}
}
$ spring run app.groovy
@Grab(“org.springframework.boot:spring-boot-web-starter:0.5.0")
@EnableAutoConfiguration
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.*;
Estructura básica
package com.example.myproject;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
// @Configuration @EnableAutoConfiguration @ComponentScan
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
JTwig
(Modern Java Template Engine)
• Flexible
• Fácil de aprender
• Rápido
• Integración con Spring
• Herencia
Modern Java Template
Engine
{% if variable %}
<title> Home Page </title>
{% else %}
<title> {{ title }} </title>
{% endif %}
{% for feature in features %}
<li>
{{ feature.name }}
</li>
{% endfor %}
<!DOCTYPE html>
<html>
<head>
{% block head %}
<link rel="stylesheet" href="style.css" />
{% endblock %}
{% block title %}<title>TITULO<title>{% endblock %}
</head>
<body>
<div id="content">{% block content %}{% endblock %}</
div>
<div id="footer">
{% block footer %}
{% endblock %}
</div>
</body>
</html>
#base.twig
{% extends "base.twig" %}
{% block title %}<title>INDEX<title>{% endblock %}
{% block content %}
<h1>Index</h1>
<p>
Hellow World!
</p>
{% endblock %}
Ejemplos
ValenciaJUG
• Spring Boot MVC
• Tomcat 8003
• Jtwig
• Mysql
LoginController
(/)
UserController
(/user)
(/user/{id})
UserService User
MicroService &
Spring Cloud
• Servicios pequeños
• Escalado
• Despliegues
MicroServicios
Beneficios
• Cómo localizo los servicios?
• Que pasa si alguno falla?
• Cómo los configuro?
MicroServicios
Desafíos
MicroServicios
• Integración con Netflix OSS
• Discovery (Eureka)
• Circuit Breaker (Hystrix)
• Intelligent Routing (Zuul)
• Client Side Load Balancing (Ribbon)
Eureka Server
Greeting-Service ValenciaJUG
• Server (Eureka)
• Localhost: 8001
• @EnableEurekaServer
• Service Discovery (Eureka)
• Localhost: 8002
• @EnableEurekaClient
• Service Discovery (Eureka)
• Localhost: 8003
• @EnableEurekaClient
Ejemplos
40
Conclusiones
• Herramienta potente y productiva
• No implica “nuevos” conocimientos
• Constante evolución
• Estamos muy acoplados al framework
• Documentación
GRACIAS!!

Más contenido relacionado

Destacado

Promocion vinyl 3
Promocion vinyl 3Promocion vinyl 3
Promocion vinyl 3SIVL
 
Girma's Job Resume 3 1 2015
Girma's Job Resume 3 1 2015Girma's Job Resume 3 1 2015
Girma's Job Resume 3 1 2015Girma Baker
 
Educar em ação
Educar em açãoEducar em ação
Educar em açãoSEDF
 
Portafolio digital royal stark
Portafolio digital royal starkPortafolio digital royal stark
Portafolio digital royal starkbruck39
 
Jose guadalupe producto 3
Jose guadalupe  producto  3Jose guadalupe  producto  3
Jose guadalupe producto 3esckuelita
 
Los retos de la geografía en educación básica.
Los retos de la geografía en educación básica.Los retos de la geografía en educación básica.
Los retos de la geografía en educación básica.José Gabriel Mora Ramiréz
 
IGIP General Rules 2016
IGIP General Rules 2016IGIP General Rules 2016
IGIP General Rules 2016aiesec_poland
 
Dicas para usar o PowerPoint
Dicas para usar o PowerPointDicas para usar o PowerPoint
Dicas para usar o PowerPointsilvanatsal
 

Destacado (13)

Promocion vinyl 3
Promocion vinyl 3Promocion vinyl 3
Promocion vinyl 3
 
Girma's Job Resume 3 1 2015
Girma's Job Resume 3 1 2015Girma's Job Resume 3 1 2015
Girma's Job Resume 3 1 2015
 
CAT - 1st MyUniversity poster
CAT - 1st MyUniversity posterCAT - 1st MyUniversity poster
CAT - 1st MyUniversity poster
 
Cabarceno
CabarcenoCabarceno
Cabarceno
 
Educar em ação
Educar em açãoEducar em ação
Educar em ação
 
Gagne 1228351090738832-9
Gagne 1228351090738832-9Gagne 1228351090738832-9
Gagne 1228351090738832-9
 
Portafolio digital royal stark
Portafolio digital royal starkPortafolio digital royal stark
Portafolio digital royal stark
 
resume3_16_2015
resume3_16_2015resume3_16_2015
resume3_16_2015
 
Jose guadalupe producto 3
Jose guadalupe  producto  3Jose guadalupe  producto  3
Jose guadalupe producto 3
 
Nicole romero
Nicole romeroNicole romero
Nicole romero
 
Los retos de la geografía en educación básica.
Los retos de la geografía en educación básica.Los retos de la geografía en educación básica.
Los retos de la geografía en educación básica.
 
IGIP General Rules 2016
IGIP General Rules 2016IGIP General Rules 2016
IGIP General Rules 2016
 
Dicas para usar o PowerPoint
Dicas para usar o PowerPointDicas para usar o PowerPoint
Dicas para usar o PowerPoint
 

Similar a Spring Boot, Microservicios y JTwig

Similar a Spring Boot, Microservicios y JTwig (20)

Java
JavaJava
Java
 
GWT
GWTGWT
GWT
 
Springboot Overview
Springboot  OverviewSpringboot  Overview
Springboot Overview
 
Presentacion #bbmnk
Presentacion #bbmnkPresentacion #bbmnk
Presentacion #bbmnk
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generation
 
Xamarin Forms y MVVM
Xamarin Forms y MVVMXamarin Forms y MVVM
Xamarin Forms y MVVM
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
 
Presentacion node
Presentacion nodePresentacion node
Presentacion node
 
Microservicios con Quarkus
Microservicios con QuarkusMicroservicios con Quarkus
Microservicios con Quarkus
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
Taller Evento TestingUY 2018 - Test Automation Gourmet
Taller Evento TestingUY 2018 - Test Automation GourmetTaller Evento TestingUY 2018 - Test Automation Gourmet
Taller Evento TestingUY 2018 - Test Automation Gourmet
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
Dependency Injection con Guice - GTUG
Dependency Injection con Guice - GTUGDependency Injection con Guice - GTUG
Dependency Injection con Guice - GTUG
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipster
 
Curso de Desarrollo Web 2
Curso de Desarrollo Web 2Curso de Desarrollo Web 2
Curso de Desarrollo Web 2
 
SpringFramework Overview
SpringFramework OverviewSpringFramework Overview
SpringFramework Overview
 
Introducccion springframework
Introducccion springframeworkIntroducccion springframework
Introducccion springframework
 
Ios.s5
Ios.s5Ios.s5
Ios.s5
 
Desarrollo de Microservicios con Spring Boot.
Desarrollo de Microservicios con Spring Boot.Desarrollo de Microservicios con Spring Boot.
Desarrollo de Microservicios con Spring Boot.
 

Spring Boot, Microservicios y JTwig