Spring Boot
Como iniciar um aplicação em minutos
@john_godoi
@john_godoi
● ~ 6 anos de experiência com desenvolvimento Java
@john_godoi
● ~ 6 anos de experiência com desenvolvimento Java
● Mestrando e graduado pela UNIFESP - SJC
○ Aprendizado de máquina e processamento de imagens (Java)
■ JavaCV, Gradle, JavaFX, JFreeChart, ...
○ Aplicações forenses e médicas
@john_godoi
● ~ 6 anos de experiência com desenvolvimento Java
● Mestrando e graduado pela UNIFESP - SJC
○ Aprendizado de máquina e processamento de imagens (Java)
■ JavaCV, Gradle, JavaFX, JFreeChart, ...
○ Aplicações forenses e médicas
● Trabalho atualmente na FITec há 6 meses em um projeto de
telecomunicações
○ OSGi, Cassandra, REST, Java 8, Mockito, maven…
@john_godoi
● ~ 6 anos de experiência com desenvolvimento Java
● Mestrando e graduado pela UNIFESP - SJC
○ Aprendizado de máquina e processamento de imagens (Java)
■ JavaCV, Gradle, JavaFX, JFreeChart, ...
○ Aplicações forenses e médicas
● Trabalho atualmente na FITec há 6 meses em um projeto de
telecomunicações
○ OSGi, Cassandra, REST, Java 8, Mockito, maven…
● Experiências anteriores
○ Spring, Hibernate, maven, BI, ...
Goals
● Apresentação voltada principalmente a principiantes
○ Irei mostrar do zero e explicar do zero
Goals
● Apresentação voltada principalmente a principiantes
○ Irei mostrar do zero e explicar do zero
● Aos mais experimentes:
○ Talvez vejam algo novo
○ Talvez possam colaborar com alguma informação (fiquem à vontade)
Spring Boot
Como iniciar um aplicação em minutos
O que é Spring?
● Inicialmente uma framework de Injeção de Dependências (DI)
● Mais leve do que as soluções Java EE
● Melhor arquitetura
● Atualmente:
○ Conjunto de frameworks que resolvem diversos problemas comuns do desenvolvimento de
softwares
○ Spring Data, Spring MVC, Spring
Como eram configurados projetos?
Como eram configurados projetos
Como eram configurados projetos
● XML everywhere
Como eram configurados projetos
● XML everywhere
● Programaticamente
Como eram configurados projetos
● XML everywhere
● Programaticamente
● Anotações
Como eram configurados projetos
● XML everywhere
● Programaticamente
● Anotações
● Convention over Configuration
Spring Boot
O que é Spring Boot?
O que é Spring Boot?
Como iniciar uma aplicação
● CLI
Como iniciar uma aplicação
● CLI
● Spring Initializer
Como iniciar uma aplicação
● CLI
● Spring Initializer
● STS
Como iniciar uma aplicação
● CLI
● Spring Initializer
● STS
● Gerenciadores de ciclo de vida
○ Maven
○ Gradle
Como iniciar uma aplicação
● CLI
● Spring Initializer
● STS
● Gerenciadores de ciclo de vida
○ Maven
○ Gradle
● Clonando um exemplo do github do spring boot
Um pouco de teoria
Protocolo HTTP e APIs REST
● HTTP
○ Protocolo web a nível de aplicação
○ Possui cabeçalho com metadados que permitem diferenciar requisições
Protocolo HTTP e APIs REST
● HTTP
○ Protocolo web a nível de aplicação
○ Possui cabeçalho com metadados que permitem diferenciar requisições
● API
○ Application Program Interface
Protocolo HTTP e APIs REST
● HTTP
○ Protocolo web a nível de aplicação
○ Possui cabeçalho com metadados que permitem diferenciar requisições
● API
○ Application Program Interface
● API Rest
○ API que se utiliza do protocolo HTTP para manipulação do programa
CRUD
● Create
● Read
● Update
● Delete
CRUD (métodos HTTP)
● Create (Post)
● Read (Get)
● Update (Put)
● Delete (Delete)
Nuvem (PaaS, SaaS, …)
● PaaS - Plataform as a Service
○ VM online (EC2 - AWS)
● Software as a Service
○ Serviço de hospedagem (BeanStalk - AWS)
Bancos de Dados
● Como realizaremos a persistência dos dados?
Bancos de Dados
● Como realizaremos a persistência dos dados?
● Relacional X NoSQL
Versionamento
● Como manter o histórico de mudanças no sistema?
Versionamento
● Como manter o histórico de mudanças no sistema?
● Distribuídos
○ git
■ Github
■ Bitbucket
■ …
Controladores de ciclo de vida de aplicações
● Dependências
Controladores de ciclo de vida de aplicações
● Dependências
● Build
Controladores de ciclo de vida de aplicações
● Dependências
● Build
● Test
Controladores de ciclo de vida de aplicações
● Dependências
● Build
● Test
● Execução
Controladores de ciclo de vida de aplicações
● Dependências
● Build
● Test
● Execução
● Maven
● Gradle
Preparados?
Getting Started
● Vamos iniciar de um exemplo existente de aplicação spring boot
○ git clone https://github.com/spring-guides/gs-rest-service/
● gradle.build
○ plugins para o gradle
○ Java 8
○ spring-boot-starter-web
○ spring-boot-starter-test
○ json dependency
O que nós já temos?
● Um servidor de aplicações tomcat em pé atendendo na porta 8080
● Uma aplicação que atende a requisições http
○ Recebendo parâmetros via queries parameters
○ Responde com um JSON
http://localhost:8080/greeting
{"id":1,"content":"Hello, World!"}
http://localhost:8080/greeting?name=John
{"id":2,"content":"Hello, John!"}
Vamos dar uma olhada no código
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Vamos dar uma olhada no código
@RestController
public class GreetingController {
//...
@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
return new Greeting(counter.incrementAndGet(), String.format(template, name));
}
}
Now what?
Now what?
Now what?
● Incluir um banco de dados para persistir nossos registros
● Criar o restante de nossa api REST
● Criar uma tela que consuma nossa API
● Fazer deploy na Amazon Web Services
Banco de dados
Adicionar a dependência:
“org.springframework.boot:spring-boot-starter-data-jpa”
Driver do banco a ser utilizado:
“com.h2database:h2” ou “org.postgresql:postgresql:9.4-1206-jdbc42”
JPA
● Como os objetos da aplicação com os dados do banco de dados?
JPA
● Como os objetos da aplicação com os dados do banco de dados?
● Especificação JavaEE
● Implementação mais utilizada: Hibernate
Spring MVC
Postman
WAR
● Web application Archive
○ Formato que o Java disponibiliza aplicações web
AWS
● Criar uma conta na AWS
● Procurar nos serviços por Elastic BeanStalk
AWS
● Criar uma aplicação com nome e descrição
AWS
● Criar uma ambiente
AWS
● Escolher tier
AWS
● Criar ambiente
AWS
● Criar ambiente
AWS
● Plataforma Java
● Application code:
Sample application
AWS
● Ambiente sendo criado
Spring-Boot-Actuator
Para subir uma aplicação Spring Boot para AWS precisamos que esta esteja
escutando na porta 5000.
Para fazer isso podemos nos utilizar do Spring Boot novamente.
Spring-Boot-Actuator
Para subir uma aplicação Spring Boot para AWS precisamos que esta esteja
escutando na porta 5000.
Para fazer isso podemos nos utilizar do Spring Boot novamente.
Bastar adicionar como dependência:
compile("org.springframework.boot:spring-boot-starter-actuator")
E o arquivo application.properties em /src/main/resources com:
server.port=5000
Retrospectiva
Retrospectiva
● Poucas configurações
● Mais desenvolvimento
○ Arquitetura
○ Infraestrutura
○ Mais funcionalidades
● ?
Referências irei colocar na versão final
Q&A
Thanks!
Spring Boot
Como iniciar um aplicação em minutos
@john_godoi

Spring boot

  • 1.
    Spring Boot Como iniciarum aplicação em minutos @john_godoi
  • 2.
    @john_godoi ● ~ 6anos de experiência com desenvolvimento Java
  • 3.
    @john_godoi ● ~ 6anos de experiência com desenvolvimento Java ● Mestrando e graduado pela UNIFESP - SJC ○ Aprendizado de máquina e processamento de imagens (Java) ■ JavaCV, Gradle, JavaFX, JFreeChart, ... ○ Aplicações forenses e médicas
  • 4.
    @john_godoi ● ~ 6anos de experiência com desenvolvimento Java ● Mestrando e graduado pela UNIFESP - SJC ○ Aprendizado de máquina e processamento de imagens (Java) ■ JavaCV, Gradle, JavaFX, JFreeChart, ... ○ Aplicações forenses e médicas ● Trabalho atualmente na FITec há 6 meses em um projeto de telecomunicações ○ OSGi, Cassandra, REST, Java 8, Mockito, maven…
  • 5.
    @john_godoi ● ~ 6anos de experiência com desenvolvimento Java ● Mestrando e graduado pela UNIFESP - SJC ○ Aprendizado de máquina e processamento de imagens (Java) ■ JavaCV, Gradle, JavaFX, JFreeChart, ... ○ Aplicações forenses e médicas ● Trabalho atualmente na FITec há 6 meses em um projeto de telecomunicações ○ OSGi, Cassandra, REST, Java 8, Mockito, maven… ● Experiências anteriores ○ Spring, Hibernate, maven, BI, ...
  • 6.
    Goals ● Apresentação voltadaprincipalmente a principiantes ○ Irei mostrar do zero e explicar do zero
  • 7.
    Goals ● Apresentação voltadaprincipalmente a principiantes ○ Irei mostrar do zero e explicar do zero ● Aos mais experimentes: ○ Talvez vejam algo novo ○ Talvez possam colaborar com alguma informação (fiquem à vontade)
  • 8.
    Spring Boot Como iniciarum aplicação em minutos
  • 9.
    O que éSpring? ● Inicialmente uma framework de Injeção de Dependências (DI) ● Mais leve do que as soluções Java EE ● Melhor arquitetura ● Atualmente: ○ Conjunto de frameworks que resolvem diversos problemas comuns do desenvolvimento de softwares ○ Spring Data, Spring MVC, Spring
  • 10.
  • 11.
  • 12.
    Como eram configuradosprojetos ● XML everywhere
  • 13.
    Como eram configuradosprojetos ● XML everywhere ● Programaticamente
  • 14.
    Como eram configuradosprojetos ● XML everywhere ● Programaticamente ● Anotações
  • 15.
    Como eram configuradosprojetos ● XML everywhere ● Programaticamente ● Anotações ● Convention over Configuration
  • 16.
  • 17.
    O que éSpring Boot?
  • 18.
    O que éSpring Boot?
  • 19.
    Como iniciar umaaplicação ● CLI
  • 20.
    Como iniciar umaaplicação ● CLI ● Spring Initializer
  • 21.
    Como iniciar umaaplicação ● CLI ● Spring Initializer ● STS
  • 22.
    Como iniciar umaaplicação ● CLI ● Spring Initializer ● STS ● Gerenciadores de ciclo de vida ○ Maven ○ Gradle
  • 23.
    Como iniciar umaaplicação ● CLI ● Spring Initializer ● STS ● Gerenciadores de ciclo de vida ○ Maven ○ Gradle ● Clonando um exemplo do github do spring boot
  • 24.
  • 26.
    Protocolo HTTP eAPIs REST ● HTTP ○ Protocolo web a nível de aplicação ○ Possui cabeçalho com metadados que permitem diferenciar requisições
  • 27.
    Protocolo HTTP eAPIs REST ● HTTP ○ Protocolo web a nível de aplicação ○ Possui cabeçalho com metadados que permitem diferenciar requisições ● API ○ Application Program Interface
  • 28.
    Protocolo HTTP eAPIs REST ● HTTP ○ Protocolo web a nível de aplicação ○ Possui cabeçalho com metadados que permitem diferenciar requisições ● API ○ Application Program Interface ● API Rest ○ API que se utiliza do protocolo HTTP para manipulação do programa
  • 29.
  • 30.
    CRUD (métodos HTTP) ●Create (Post) ● Read (Get) ● Update (Put) ● Delete (Delete)
  • 31.
    Nuvem (PaaS, SaaS,…) ● PaaS - Plataform as a Service ○ VM online (EC2 - AWS) ● Software as a Service ○ Serviço de hospedagem (BeanStalk - AWS)
  • 32.
    Bancos de Dados ●Como realizaremos a persistência dos dados?
  • 33.
    Bancos de Dados ●Como realizaremos a persistência dos dados? ● Relacional X NoSQL
  • 34.
    Versionamento ● Como mantero histórico de mudanças no sistema?
  • 35.
    Versionamento ● Como mantero histórico de mudanças no sistema? ● Distribuídos ○ git ■ Github ■ Bitbucket ■ …
  • 36.
    Controladores de ciclode vida de aplicações ● Dependências
  • 37.
    Controladores de ciclode vida de aplicações ● Dependências ● Build
  • 38.
    Controladores de ciclode vida de aplicações ● Dependências ● Build ● Test
  • 39.
    Controladores de ciclode vida de aplicações ● Dependências ● Build ● Test ● Execução
  • 40.
    Controladores de ciclode vida de aplicações ● Dependências ● Build ● Test ● Execução ● Maven ● Gradle
  • 42.
  • 43.
    Getting Started ● Vamosiniciar de um exemplo existente de aplicação spring boot ○ git clone https://github.com/spring-guides/gs-rest-service/ ● gradle.build ○ plugins para o gradle ○ Java 8 ○ spring-boot-starter-web ○ spring-boot-starter-test ○ json dependency
  • 44.
    O que nósjá temos? ● Um servidor de aplicações tomcat em pé atendendo na porta 8080 ● Uma aplicação que atende a requisições http ○ Recebendo parâmetros via queries parameters ○ Responde com um JSON http://localhost:8080/greeting {"id":1,"content":"Hello, World!"} http://localhost:8080/greeting?name=John {"id":2,"content":"Hello, John!"}
  • 45.
    Vamos dar umaolhada no código @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
  • 46.
    Vamos dar umaolhada no código @RestController public class GreetingController { //... @RequestMapping("/greeting") public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) { return new Greeting(counter.incrementAndGet(), String.format(template, name)); } }
  • 47.
  • 48.
  • 49.
    Now what? ● Incluirum banco de dados para persistir nossos registros ● Criar o restante de nossa api REST ● Criar uma tela que consuma nossa API ● Fazer deploy na Amazon Web Services
  • 50.
    Banco de dados Adicionara dependência: “org.springframework.boot:spring-boot-starter-data-jpa” Driver do banco a ser utilizado: “com.h2database:h2” ou “org.postgresql:postgresql:9.4-1206-jdbc42”
  • 51.
    JPA ● Como osobjetos da aplicação com os dados do banco de dados?
  • 52.
    JPA ● Como osobjetos da aplicação com os dados do banco de dados? ● Especificação JavaEE ● Implementação mais utilizada: Hibernate
  • 53.
  • 55.
  • 56.
    WAR ● Web applicationArchive ○ Formato que o Java disponibiliza aplicações web
  • 57.
    AWS ● Criar umaconta na AWS ● Procurar nos serviços por Elastic BeanStalk
  • 58.
    AWS ● Criar umaaplicação com nome e descrição
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
    AWS ● Plataforma Java ●Application code: Sample application
  • 64.
  • 65.
    Spring-Boot-Actuator Para subir umaaplicação Spring Boot para AWS precisamos que esta esteja escutando na porta 5000. Para fazer isso podemos nos utilizar do Spring Boot novamente.
  • 66.
    Spring-Boot-Actuator Para subir umaaplicação Spring Boot para AWS precisamos que esta esteja escutando na porta 5000. Para fazer isso podemos nos utilizar do Spring Boot novamente. Bastar adicionar como dependência: compile("org.springframework.boot:spring-boot-starter-actuator") E o arquivo application.properties em /src/main/resources com: server.port=5000
  • 67.
  • 68.
    Retrospectiva ● Poucas configurações ●Mais desenvolvimento ○ Arquitetura ○ Infraestrutura ○ Mais funcionalidades ● ?
  • 69.
    Referências irei colocarna versão final
  • 70.
  • 71.
    Thanks! Spring Boot Como iniciarum aplicação em minutos @john_godoi