SlideShare a Scribd company logo
1 of 71
Download to read offline
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

More Related Content

What's hot

Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoEduardo Bohrer
 
Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPArthur Fücher
 
O que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensO que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensRodrigo Matheus
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsRafael Soares
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introduçãoPablo Feijó
 
Escalabilidade em Aplicações - Fisl13
Escalabilidade em Aplicações - Fisl13Escalabilidade em Aplicações - Fisl13
Escalabilidade em Aplicações - Fisl13Flavio Torres
 
Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Pablo Souza
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigitalJust Digital
 
Light Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsLight Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsCaio Ribeiro Pereira
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarFilipe Falcão
 
Apresentação - MongoDB
Apresentação - MongoDBApresentação - MongoDB
Apresentação - MongoDBJDSBD
 
Offline apps Using Ionic Framework and PouchDB
Offline apps  Using Ionic Framework and PouchDBOffline apps  Using Ionic Framework and PouchDB
Offline apps Using Ionic Framework and PouchDBAlvaro Viebrantz
 
Curso de Node.js e MongoDB - 04
Curso de Node.js e MongoDB - 04Curso de Node.js e MongoDB - 04
Curso de Node.js e MongoDB - 04Luiz Duarte
 

What's hot (20)

Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SP
 
O que é nodejs, cases e vantagens
O que é nodejs, cases e vantagensO que é nodejs, cases e vantagens
O que é nodejs, cases e vantagens
 
Uma visão rápida sobre Nodejs
Uma visão rápida sobre NodejsUma visão rápida sobre Nodejs
Uma visão rápida sobre Nodejs
 
Node.js, Uma breve introdução
Node.js, Uma breve introduçãoNode.js, Uma breve introdução
Node.js, Uma breve introdução
 
Mongo db slides
Mongo db slidesMongo db slides
Mongo db slides
 
Escalabilidade em Aplicações - Fisl13
Escalabilidade em Aplicações - Fisl13Escalabilidade em Aplicações - Fisl13
Escalabilidade em Aplicações - Fisl13
 
Javascript nos dias de hoje
Javascript nos dias de hojeJavascript nos dias de hoje
Javascript nos dias de hoje
 
Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?
 
Palestra parse
Palestra parsePalestra parse
Palestra parse
 
Nodejs justdigital
Nodejs justdigitalNodejs justdigital
Nodejs justdigital
 
Por que Node JS?
Por que Node JS?Por que Node JS?
Por que Node JS?
 
Light Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsLight Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.js
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
Apresentação - MongoDB
Apresentação - MongoDBApresentação - MongoDB
Apresentação - MongoDB
 
Grails
GrailsGrails
Grails
 
Offline apps Using Ionic Framework and PouchDB
Offline apps  Using Ionic Framework and PouchDBOffline apps  Using Ionic Framework and PouchDB
Offline apps Using Ionic Framework and PouchDB
 
Curso de Node.js e MongoDB - 04
Curso de Node.js e MongoDB - 04Curso de Node.js e MongoDB - 04
Curso de Node.js e MongoDB - 04
 
Conhecendo mundo Node.js
Conhecendo mundo Node.jsConhecendo mundo Node.js
Conhecendo mundo Node.js
 

Similar to Spring boot

Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkBruno Oliveira
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3André Luiz Forchesatto
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03Ale Uehara
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemRodrigo Valerio
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?Fabio Janiszevski
 
Play - Full Stack Java Web Framework
Play -  Full Stack Java Web FrameworkPlay -  Full Stack Java Web Framework
Play - Full Stack Java Web FrameworkMauricio Carvalho
 
O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017Renato Groff
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosThiago Soares
 
ASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekRenato Groff
 
ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017
ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017
ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017Renato Groff
 
Visao geral TI03 2-0
Visao geral TI03 2-0Visao geral TI03 2-0
Visao geral TI03 2-0Ale Uehara
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Valmir Justo
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com AngularElmano Cavalcanti
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 

Similar to Spring boot (20)

Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018
 
Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest Framework
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Django
DjangoDjango
Django
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?
 
Play - Full Stack Java Web Framework
Play -  Full Stack Java Web FrameworkPlay -  Full Stack Java Web Framework
Play - Full Stack Java Web Framework
 
O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017O novo ASP.NET - Stone Tech Saturday - Março/2017
O novo ASP.NET - Stone Tech Saturday - Março/2017
 
JHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãosJHipster - Produtividade e Maturidade em suas mãos
JHipster - Produtividade e Maturidade em suas mãos
 
ASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev Week
 
ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017
ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017
ASP.NET Core e Linux - ASP.NET Core Day - Maio/2017
 
Vraptor 3
Vraptor 3Vraptor 3
Vraptor 3
 
Visao geral TI03 2-0
Visao geral TI03 2-0Visao geral TI03 2-0
Visao geral TI03 2-0
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 

More from John Godoi

(5) maneiras de motivar a si mesmo
(5) maneiras de motivar a si mesmo(5) maneiras de motivar a si mesmo
(5) maneiras de motivar a si mesmoJohn Godoi
 
The Passionate Programmer (Career tips and learnings)
The Passionate Programmer (Career tips and learnings)The Passionate Programmer (Career tips and learnings)
The Passionate Programmer (Career tips and learnings)John Godoi
 
O jogo mental do poker
O jogo mental do pokerO jogo mental do poker
O jogo mental do pokerJohn Godoi
 
There is no box
There is no boxThere is no box
There is no boxJohn Godoi
 
Comandos do Linux
Comandos do LinuxComandos do Linux
Comandos do LinuxJohn Godoi
 
Intro to java 8
Intro to java 8Intro to java 8
Intro to java 8John Godoi
 
Introduction to apache spark
Introduction to apache sparkIntroduction to apache spark
Introduction to apache sparkJohn Godoi
 
Software craftsmanship
Software craftsmanshipSoftware craftsmanship
Software craftsmanshipJohn Godoi
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01John Godoi
 

More from John Godoi (15)

(5) maneiras de motivar a si mesmo
(5) maneiras de motivar a si mesmo(5) maneiras de motivar a si mesmo
(5) maneiras de motivar a si mesmo
 
The Passionate Programmer (Career tips and learnings)
The Passionate Programmer (Career tips and learnings)The Passionate Programmer (Career tips and learnings)
The Passionate Programmer (Career tips and learnings)
 
O jogo mental do poker
O jogo mental do pokerO jogo mental do poker
O jogo mental do poker
 
There is no box
There is no boxThere is no box
There is no box
 
Gimplabs2
Gimplabs2 Gimplabs2
Gimplabs2
 
Gimplabs3
Gimplabs3 Gimplabs3
Gimplabs3
 
Gcc
Gcc Gcc
Gcc
 
Git básico
Git básicoGit básico
Git básico
 
Gimplabs1
Gimplabs1 Gimplabs1
Gimplabs1
 
Shell Script
Shell ScriptShell Script
Shell Script
 
Comandos do Linux
Comandos do LinuxComandos do Linux
Comandos do Linux
 
Intro to java 8
Intro to java 8Intro to java 8
Intro to java 8
 
Introduction to apache spark
Introduction to apache sparkIntroduction to apache spark
Introduction to apache spark
 
Software craftsmanship
Software craftsmanshipSoftware craftsmanship
Software craftsmanship
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01
 

Recently uploaded

Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Dirceu Resende
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfRodolpho Concurde
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)Alessandro Almeida
 
Apresentação Comercial VITAL DATA 2024.pdf
Apresentação Comercial VITAL DATA 2024.pdfApresentação Comercial VITAL DATA 2024.pdf
Apresentação Comercial VITAL DATA 2024.pdfCarlos Gomes
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAMarcio Venturelli
 
Certificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdfCertificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdfLarissa Souza
 

Recently uploaded (6)

Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 
Apresentação Comercial VITAL DATA 2024.pdf
Apresentação Comercial VITAL DATA 2024.pdfApresentação Comercial VITAL DATA 2024.pdf
Apresentação Comercial VITAL DATA 2024.pdf
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 
Certificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdfCertificado - Data Analytics - CoderHouse.pdf
Certificado - Data Analytics - CoderHouse.pdf
 

Spring boot

  • 1. Spring Boot Como iniciar um aplicação em minutos @john_godoi
  • 2. @john_godoi ● ~ 6 anos de experiência com desenvolvimento Java
  • 3. @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
  • 4. @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…
  • 5. @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, ...
  • 6. Goals ● Apresentação voltada principalmente a principiantes ○ Irei mostrar do zero e explicar do zero
  • 7. 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)
  • 8. Spring Boot Como iniciar um 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
  • 12. Como eram configurados projetos ● XML everywhere
  • 13. Como eram configurados projetos ● XML everywhere ● Programaticamente
  • 14. Como eram configurados projetos ● XML everywhere ● Programaticamente ● Anotações
  • 15. Como eram configurados projetos ● XML everywhere ● Programaticamente ● Anotações ● Convention over Configuration
  • 17. O que é Spring Boot?
  • 18. O que é Spring Boot?
  • 19. Como iniciar uma aplicação ● CLI
  • 20. Como iniciar uma aplicação ● CLI ● Spring Initializer
  • 21. Como iniciar uma aplicação ● CLI ● Spring Initializer ● STS
  • 22. Como iniciar uma aplicação ● CLI ● Spring Initializer ● STS ● Gerenciadores de ciclo de vida ○ Maven ○ Gradle
  • 23. Como iniciar uma aplicação ● CLI ● Spring Initializer ● STS ● Gerenciadores de ciclo de vida ○ Maven ○ Gradle ● Clonando um exemplo do github do spring boot
  • 24. Um pouco de teoria
  • 25.
  • 26. Protocolo HTTP e APIs REST ● HTTP ○ Protocolo web a nível de aplicação ○ Possui cabeçalho com metadados que permitem diferenciar requisições
  • 27. 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
  • 28. 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
  • 29. CRUD ● Create ● Read ● Update ● Delete
  • 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 manter o histórico de mudanças no sistema?
  • 35. Versionamento ● Como manter o histórico de mudanças no sistema? ● Distribuídos ○ git ■ Github ■ Bitbucket ■ …
  • 36. Controladores de ciclo de vida de aplicações ● Dependências
  • 37. Controladores de ciclo de vida de aplicações ● Dependências ● Build
  • 38. Controladores de ciclo de vida de aplicações ● Dependências ● Build ● Test
  • 39. Controladores de ciclo de vida de aplicações ● Dependências ● Build ● Test ● Execução
  • 40. Controladores de ciclo de vida de aplicações ● Dependências ● Build ● Test ● Execução ● Maven ● Gradle
  • 41.
  • 43. 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
  • 44. 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!"}
  • 45. Vamos dar uma olhada no código @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
  • 46. 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)); } }
  • 49. 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
  • 50. 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”
  • 51. JPA ● Como os objetos da aplicação com os dados do banco de dados?
  • 52. JPA ● Como os objetos da aplicação com os dados do banco de dados? ● Especificação JavaEE ● Implementação mais utilizada: Hibernate
  • 54.
  • 56. WAR ● Web application Archive ○ Formato que o Java disponibiliza aplicações web
  • 57. AWS ● Criar uma conta na AWS ● Procurar nos serviços por Elastic BeanStalk
  • 58. AWS ● Criar uma aplicação com nome e descrição
  • 59. AWS ● Criar uma ambiente
  • 63. AWS ● Plataforma Java ● Application code: Sample application
  • 65. 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.
  • 66. 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
  • 68. Retrospectiva ● Poucas configurações ● Mais desenvolvimento ○ Arquitetura ○ Infraestrutura ○ Mais funcionalidades ● ?
  • 69. Referências irei colocar na versão final
  • 70. Q&A
  • 71. Thanks! Spring Boot Como iniciar um aplicação em minutos @john_godoi