SlideShare une entreprise Scribd logo
1  sur  75
Télécharger pour lire hors ligne
Produtividade e Maturidade em suas mãos
Thiago Soares
Presented by
Thiago.soares.jr@gmail.com
JHipster
Agenda
1. Nosso Objetivo
2. O Desafio
3. JHipster
4. Spring
5. Deploy
Objetivos de Hoje
•Conhecer o JHipster
•Conhecer o Heroku
•Conhecer o Spring
Ideia Principal
Criar uma aplicação funcional
com o JHipster e então observar
cada parte do código gerado e
entender como cada parte
funciona e como se relacionam
com as demais .
Nosso Desafio
O Desafio
•Demonstração para o novo Cliente:
Criar uma aplicação funcional, seguindo
um modelo proposto, atendendo os
seguintes requisitos:
• Bonita
• Interface Responsiva
• Segura
• Escalável
• Internacionalização: Português, Inglês, Espanhol e
Francês.
• Login Próprio, Facebook, Twitter e Google
Desafio – Cont. Requisitos
•Client-Side Angular ( 4+ )
•Server-Side deve fornecer API REST
•Módulo Administrativo com:
• Gerenciamento de Usuário
• Auditoria
• Logs
• Métricas de Consumo e Utilização da aplicação
• Gerenciamento de Configurações
• Documentação da API
• etc
Desafio – Cont. Requisitos
•Testes Server-Side e Client-Side.
• Unitário, Integração, Funcional, Performance
•Q&A
• Código Limpo
• Aderente aos melhores padrões da comunidade
• Pronto para a Produção!!!
•Possibilidade de Implantar:
• Serverless
• Container Servlet 3.0
• Docker
• Cloud (Docker, Serverless e Container)
Tempo: 1 Hora.
Opções
( ) Pedir demissão
( ) Sair correndo
( ) Fingir dor de barriga
( ) Usar uma boa ferramenta!
Opções
( ) Pedir demissão
( ) Sair correndo
( ) Fingir dor de barriga
( X ) Usar uma boa ferramenta!
JHipster
Mais um scaffolding !?
www.jhipster.tech
O que é o Jhipster
JHipster is a development platform
to generate, develop and deploy
Spring Boot + Angular + Bootstrap
Web applications and Spring
microservices.
Metas do Projeto JHipster
•Goal: Our goal is to generate for you a complete
and modern Web app or microservice architecture,
unifying:
• A high-performance and robust Java stack on the
server side with Spring Boot
• A sleek, modern, mobile-first front-end with
Angular and Bootstrap
• A robust microservice architecture with JHipster
Registry, Netflix OSS, ELK stack and Docker
• A powerful workflow to build your application
with Yarn, Webpack/Gulp and Maven/Gradle
O que é tão legal ?
•Automatiza muito do trabalho manual.
•Escola dos Frameworks.
•Produz Código de qualidade.
•Segue os padrões e boas práticas.
•Simplifica tarefas complexas.
•Várias opções de projeto
•Vasta Documentação e Comunidade ativa
Client Side Options
First Topic
Hands On
Getting Started
•mkdir javaday
•cd javaday
•code . ( Visual Studio)
Getting Started
•Instalar Java 8
•Instalar Maven
• https://maven.apache.org/
•Instalar Node.js
• https://nodejs.org/
•Instalar Yarn
• https://yarnpkg.com/lang/en/docs/install/
•Instalar Jhipster
•yarn global add generator-jhipster
yarn global add
generator-jhipster
jhipster
Waiting build……..
JHipster Registry
Não curte o Shell? Sério ?
O que o JHipster criou ?
•Estrutura inicial
•Layout inicial
•Gestão de Usuários
•Segurança
•Módulo Administrativo repleto de itens
•Gestão Métricas do Sistema
•Previsão para os casos de uso
•……..
•Tudo Funcionando!
Vamos ver
Funcionando
então!
./mvnw
yarn start
E as User Stories ?
Vou ter que fazer
na mão ?
CRUDs e a JDL
Mãos à Obra.
Vamos criar esses
Cruds
Customizando o Modelo
•Vamos ajustar alguns relacionamentos
•Remover
•Adicionar
jhipster import-jdl jhipster-jdl.jh
O que Fizemos Agora?
•CRUDs (Client side e Server side)
•Alterações do Banco de Dados
•Alterações no Menu
•Alterações de configurações
•Alterações na Internacionalização
•Etc
Como está nossa
app agora?
Social Login
Login com Goolge
•Orientações em application.yml
•Google API Console
•Authorized JavaScript origins
•http://localhost:8080
•http://localhost:9000
•Authorized redirect URIs
•http://localhost:8080/signin/google
•Habilite a Google+ API Library
•Configure o client-id e o client-secret
Deploy
Deploy ServerLess
•A aplicação funcionando sem um servidor
•Como:
•mvn package
•./target/java-day-0.0.1-SNAPSHOT.war
Deploy no Heroku
•Crie uma conta
•https://www.heroku.com/
•Instale o Heroku-Cli
• https://devcenter.heroku.com/articles/heroku-cli
•Faça o login em sua máquina
•heroku login
•Envie seu projeto para a nuvem
•jhipster heroku
•ReDeploys
•heroku deploy:jar --jar target/*.war
Spring Boot
Spring Boot
O Spring Boot é um projeto da Spring que veio
para facilitar o processo de configuração e
publicação de nossas aplicações. A intenção é
ter o seu projeto rodando o mais rápido possível
e sem complicação.
Ele consegue isso favorecendo a convenção
sobre a configuração. Basta definir quais
módulos deseja utilizar (WEB, Template,
Persistência, Segurança, etc.) e ele irá
reconhecer e configurar.
(Alexandre Afonso - algaworks)
Spring Boot Annotations
@ComponentScan
@EnableAutoConfiguration(exclude = {MetricFilterAutoConfiguration.class,
MetricRepositoryAutoConfiguration.class})
@EnableConfigurationProperties({LiquibaseProperties.class})
public class JhipsterApp {
private final Environment env;
public JhipsterApp(Environment env) {
this.env = env;
}
public static void main(String[] args) throws UnknownHostException {
SpringApplication app = new SpringApplication(JhipsterApp.class);
DefaultProfileUtil.addDefaultProfile(app);
Environment env = app.run(args).getEnvironment();
String protocol = "http";
if (env.getProperty("server.ssl.key-store") != null) {
protocol = "https";
}
}
}
Spring Boot - Dependencies
•Spring Data JPA Starter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
•Spring ElasticSearch Starter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
Dependency Injection
Injeção de dependência (Dependency Injection, em
inglês) é um padrão de desenvolvimento de programas
de computadores utilizado quando é necessário manter
baixo o nível de acoplamento entre diferentes módulos
de um sistema. Nesta solução as dependências entre os
módulos não são definidas programaticamente, mas sim
pela configuração de uma infraestrutura de software
(container) que é responsável por "injetar" em cada
componente suas dependências declaradas. A Injeção de
dependência se relaciona com o padrão Inversão de
controle mas não pode ser considerada um sinônimo
deste.
Dependency Injection
•@Inject ou @Autowired
@Inject private AlgumServicoComplexo servico;
@Autowired private OutroObjetoQualquer objInjetado;
•Construtores
public class RegionResource {
public RegionResource(RegionService regionService) {
this.regionService = regionService;
}
}
Customizando o
Código Gerado
Repository - Spring Data
•Exemplo: Filtrar pelo usuário logado
•Alteração do Modelo
jhipster import-jdl jhipster-jdl.jh
Repository - Spring Data
•Mecanismo:
• find…By
• read…By (Stream<T> Java 8)
• query…By
• count…By
• get…By
Repository - Spring Data
•Operadores:
• Distinct
•findDistinctPeopleByLastName(String lastName);
• And
•FindByEmailAddressAndLastName
(EmailAddress emailAddress, String lastName);
• Or
•FindByEmailAddressOrLastName
(EmailAddress emailAddress, String lastName);
• IgnoreCase
•findByLastNameIgnoreCase(String lastName);
• Order By
•findByOrderByFirstNameAsc();
Repository - Spring Data
•Exemplos
• List<Region> findByOrderByRegionNameAsc();
• List<Region> findByOrderByRegionNameDesc();
• List<Region> findByRegionName(String regionName);
• List<Region>
findByRegionNameIgnoreCaseOrderByRegionNameAsc
(String regionName);
• @Query("select r from Region r "
+ "where r.regionName LIKE ?1 ORDER BY id")
List<Region> buscar(String regionName);
Services
•@Service
•@Transactional
•@Transactional(readOnly = true)
•Dependency Injection
Rest - Resources
•@RestController
•@RequestMapping("/api")
•@GetMapping("/employees")
•@PostMapping("/employees")
•@PutMapping("/employees")
•@DeleteMapping("/employees/{id}")
Interface
O Banco de Dados
Gestão do Banco de Dados
•Liquibase – Source Control For Your Databases
Liquibase é uma ferramenta open source que
permite rastrear, gerenciar e aplicar mudanças
no esquema do banco de dados.
•Reflete alterações do Modelo no banco de
dados mantendo o histórico de alterações
•Permite desfazer alterações
•Permite gerir alterações entre os
ambientes.
Thanks!
No License Statements
@thiagosoaresjr /thiagosoares Thiago.soares.jr@gmail.com
Referências
•JHipster ( http://www.jhipster.tech )
•Spring ( https://spring.io/ )
•API RESTful avançada com Spring Boot e
Java 8 ( https://www.udemy.com/api-
restful-avancada-spring-boot-java-8 )

Contenu connexe

Tendances

Présentation de ECMAScript 6
Présentation de ECMAScript 6Présentation de ECMAScript 6
Présentation de ECMAScript 6
Julien CROUZET
 
가상화 기술과 컨테이너 기술의 차이점과 기대 효과
가상화 기술과 컨테이너 기술의 차이점과 기대 효과가상화 기술과 컨테이너 기술의 차이점과 기대 효과
가상화 기술과 컨테이너 기술의 차이점과 기대 효과
Opennaru, inc.
 
Virtual desktop infrastructure
Virtual desktop infrastructureVirtual desktop infrastructure
Virtual desktop infrastructure
Gokulan Subramani
 
Virtualization - Kernel Virtual Machine (KVM)
Virtualization - Kernel Virtual Machine (KVM)Virtualization - Kernel Virtual Machine (KVM)
Virtualization - Kernel Virtual Machine (KVM)
Wan Leung Wong
 
Manual de instalação do xampp
Manual de instalação do xamppManual de instalação do xampp
Manual de instalação do xampp
Ze'eduardo Silva
 

Tendances (20)

Présentation de ECMAScript 6
Présentation de ECMAScript 6Présentation de ECMAScript 6
Présentation de ECMAScript 6
 
Proxmox Talk - Linux Fest Northwest 2018
Proxmox Talk - Linux Fest Northwest 2018Proxmox Talk - Linux Fest Northwest 2018
Proxmox Talk - Linux Fest Northwest 2018
 
Micro services vs Monolith Architecture
Micro services vs Monolith ArchitectureMicro services vs Monolith Architecture
Micro services vs Monolith Architecture
 
Concept of SOA
Concept of SOAConcept of SOA
Concept of SOA
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geral
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidade
 
가상화 기술과 컨테이너 기술의 차이점과 기대 효과
가상화 기술과 컨테이너 기술의 차이점과 기대 효과가상화 기술과 컨테이너 기술의 차이점과 기대 효과
가상화 기술과 컨테이너 기술의 차이점과 기대 효과
 
Docker swarm introduction
Docker swarm introductionDocker swarm introduction
Docker swarm introduction
 
Virtualisation
VirtualisationVirtualisation
Virtualisation
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptx
 
Virtual desktop infrastructure
Virtual desktop infrastructureVirtual desktop infrastructure
Virtual desktop infrastructure
 
Microservices avec Spring Cloud
Microservices avec Spring CloudMicroservices avec Spring Cloud
Microservices avec Spring Cloud
 
Virtualization - Kernel Virtual Machine (KVM)
Virtualization - Kernel Virtual Machine (KVM)Virtualization - Kernel Virtual Machine (KVM)
Virtualization - Kernel Virtual Machine (KVM)
 
Manual de instalação do xampp
Manual de instalação do xamppManual de instalação do xampp
Manual de instalação do xampp
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Cours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapterCours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapter
 
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
 

Similaire à JHipster - Produtividade e Maturidade em suas mãos

Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
Ryan Padilha
 

Similaire à JHipster - Produtividade e Maturidade em suas mãos (20)

Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
 
De 0 a DevOps
De 0 a DevOpsDe 0 a DevOps
De 0 a DevOps
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...
 
Angular 2, TypeScript e Além
Angular 2, TypeScript e AlémAngular 2, TypeScript e Além
Angular 2, TypeScript e Além
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
Webinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSWebinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWS
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Slide 02 introdução ao code igniter, utilização do bootstrap
Slide 02   introdução ao code igniter, utilização do bootstrap Slide 02   introdução ao code igniter, utilização do bootstrap
Slide 02 introdução ao code igniter, utilização do bootstrap
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
 
Diapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdfDiapositivos práticos - Integração de Sistemas.pdf
Diapositivos práticos - Integração de Sistemas.pdf
 
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.
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniter
 
MVPConf - Azure Functions
MVPConf - Azure FunctionsMVPConf - Azure Functions
MVPConf - Azure Functions
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 

Dernier

Dernier (8)

Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

JHipster - Produtividade e Maturidade em suas mãos

  • 1. Produtividade e Maturidade em suas mãos Thiago Soares Presented by Thiago.soares.jr@gmail.com JHipster
  • 2. Agenda 1. Nosso Objetivo 2. O Desafio 3. JHipster 4. Spring 5. Deploy
  • 3. Objetivos de Hoje •Conhecer o JHipster •Conhecer o Heroku •Conhecer o Spring
  • 4.
  • 5. Ideia Principal Criar uma aplicação funcional com o JHipster e então observar cada parte do código gerado e entender como cada parte funciona e como se relacionam com as demais .
  • 7. O Desafio •Demonstração para o novo Cliente: Criar uma aplicação funcional, seguindo um modelo proposto, atendendo os seguintes requisitos: • Bonita • Interface Responsiva • Segura • Escalável • Internacionalização: Português, Inglês, Espanhol e Francês. • Login Próprio, Facebook, Twitter e Google
  • 8. Desafio – Cont. Requisitos •Client-Side Angular ( 4+ ) •Server-Side deve fornecer API REST •Módulo Administrativo com: • Gerenciamento de Usuário • Auditoria • Logs • Métricas de Consumo e Utilização da aplicação • Gerenciamento de Configurações • Documentação da API • etc
  • 9. Desafio – Cont. Requisitos •Testes Server-Side e Client-Side. • Unitário, Integração, Funcional, Performance •Q&A • Código Limpo • Aderente aos melhores padrões da comunidade • Pronto para a Produção!!! •Possibilidade de Implantar: • Serverless • Container Servlet 3.0 • Docker • Cloud (Docker, Serverless e Container)
  • 10.
  • 12. Opções ( ) Pedir demissão ( ) Sair correndo ( ) Fingir dor de barriga ( ) Usar uma boa ferramenta!
  • 13. Opções ( ) Pedir demissão ( ) Sair correndo ( ) Fingir dor de barriga ( X ) Usar uma boa ferramenta!
  • 17. O que é o Jhipster JHipster is a development platform to generate, develop and deploy Spring Boot + Angular + Bootstrap Web applications and Spring microservices.
  • 18. Metas do Projeto JHipster •Goal: Our goal is to generate for you a complete and modern Web app or microservice architecture, unifying: • A high-performance and robust Java stack on the server side with Spring Boot • A sleek, modern, mobile-first front-end with Angular and Bootstrap • A robust microservice architecture with JHipster Registry, Netflix OSS, ELK stack and Docker • A powerful workflow to build your application with Yarn, Webpack/Gulp and Maven/Gradle
  • 19. O que é tão legal ? •Automatiza muito do trabalho manual. •Escola dos Frameworks. •Produz Código de qualidade. •Segue os padrões e boas práticas. •Simplifica tarefas complexas. •Várias opções de projeto •Vasta Documentação e Comunidade ativa
  • 21.
  • 22.
  • 25. Getting Started •mkdir javaday •cd javaday •code . ( Visual Studio)
  • 26. Getting Started •Instalar Java 8 •Instalar Maven • https://maven.apache.org/ •Instalar Node.js • https://nodejs.org/ •Instalar Yarn • https://yarnpkg.com/lang/en/docs/install/ •Instalar Jhipster •yarn global add generator-jhipster
  • 29.
  • 32. Não curte o Shell? Sério ?
  • 33.
  • 34. O que o JHipster criou ? •Estrutura inicial •Layout inicial •Gestão de Usuários •Segurança •Módulo Administrativo repleto de itens •Gestão Métricas do Sistema •Previsão para os casos de uso •…….. •Tudo Funcionando!
  • 35.
  • 39. E as User Stories ? Vou ter que fazer na mão ?
  • 40.
  • 41. CRUDs e a JDL
  • 42. Mãos à Obra. Vamos criar esses Cruds
  • 43. Customizando o Modelo •Vamos ajustar alguns relacionamentos •Remover •Adicionar
  • 45.
  • 46. O que Fizemos Agora? •CRUDs (Client side e Server side) •Alterações do Banco de Dados •Alterações no Menu •Alterações de configurações •Alterações na Internacionalização •Etc
  • 49. Login com Goolge •Orientações em application.yml •Google API Console •Authorized JavaScript origins •http://localhost:8080 •http://localhost:9000 •Authorized redirect URIs •http://localhost:8080/signin/google •Habilite a Google+ API Library •Configure o client-id e o client-secret
  • 51. Deploy ServerLess •A aplicação funcionando sem um servidor •Como: •mvn package •./target/java-day-0.0.1-SNAPSHOT.war
  • 52. Deploy no Heroku •Crie uma conta •https://www.heroku.com/ •Instale o Heroku-Cli • https://devcenter.heroku.com/articles/heroku-cli •Faça o login em sua máquina •heroku login •Envie seu projeto para a nuvem •jhipster heroku •ReDeploys •heroku deploy:jar --jar target/*.war
  • 53.
  • 55. Spring Boot O Spring Boot é um projeto da Spring que veio para facilitar o processo de configuração e publicação de nossas aplicações. A intenção é ter o seu projeto rodando o mais rápido possível e sem complicação. Ele consegue isso favorecendo a convenção sobre a configuração. Basta definir quais módulos deseja utilizar (WEB, Template, Persistência, Segurança, etc.) e ele irá reconhecer e configurar. (Alexandre Afonso - algaworks)
  • 56. Spring Boot Annotations @ComponentScan @EnableAutoConfiguration(exclude = {MetricFilterAutoConfiguration.class, MetricRepositoryAutoConfiguration.class}) @EnableConfigurationProperties({LiquibaseProperties.class}) public class JhipsterApp { private final Environment env; public JhipsterApp(Environment env) { this.env = env; } public static void main(String[] args) throws UnknownHostException { SpringApplication app = new SpringApplication(JhipsterApp.class); DefaultProfileUtil.addDefaultProfile(app); Environment env = app.run(args).getEnvironment(); String protocol = "http"; if (env.getProperty("server.ssl.key-store") != null) { protocol = "https"; } } }
  • 57. Spring Boot - Dependencies •Spring Data JPA Starter <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> •Spring ElasticSearch Starter <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>
  • 58. Dependency Injection Injeção de dependência (Dependency Injection, em inglês) é um padrão de desenvolvimento de programas de computadores utilizado quando é necessário manter baixo o nível de acoplamento entre diferentes módulos de um sistema. Nesta solução as dependências entre os módulos não são definidas programaticamente, mas sim pela configuração de uma infraestrutura de software (container) que é responsável por "injetar" em cada componente suas dependências declaradas. A Injeção de dependência se relaciona com o padrão Inversão de controle mas não pode ser considerada um sinônimo deste.
  • 59. Dependency Injection •@Inject ou @Autowired @Inject private AlgumServicoComplexo servico; @Autowired private OutroObjetoQualquer objInjetado; •Construtores public class RegionResource { public RegionResource(RegionService regionService) { this.regionService = regionService; } }
  • 61. Repository - Spring Data •Exemplo: Filtrar pelo usuário logado •Alteração do Modelo
  • 63. Repository - Spring Data •Mecanismo: • find…By • read…By (Stream<T> Java 8) • query…By • count…By • get…By
  • 64. Repository - Spring Data •Operadores: • Distinct •findDistinctPeopleByLastName(String lastName); • And •FindByEmailAddressAndLastName (EmailAddress emailAddress, String lastName); • Or •FindByEmailAddressOrLastName (EmailAddress emailAddress, String lastName); • IgnoreCase •findByLastNameIgnoreCase(String lastName); • Order By •findByOrderByFirstNameAsc();
  • 65. Repository - Spring Data •Exemplos • List<Region> findByOrderByRegionNameAsc(); • List<Region> findByOrderByRegionNameDesc(); • List<Region> findByRegionName(String regionName); • List<Region> findByRegionNameIgnoreCaseOrderByRegionNameAsc (String regionName); • @Query("select r from Region r " + "where r.regionName LIKE ?1 ORDER BY id") List<Region> buscar(String regionName);
  • 69.
  • 70. O Banco de Dados
  • 71. Gestão do Banco de Dados •Liquibase – Source Control For Your Databases Liquibase é uma ferramenta open source que permite rastrear, gerenciar e aplicar mudanças no esquema do banco de dados. •Reflete alterações do Modelo no banco de dados mantendo o histórico de alterações •Permite desfazer alterações •Permite gerir alterações entre os ambientes.
  • 72.
  • 73. Thanks! No License Statements @thiagosoaresjr /thiagosoares Thiago.soares.jr@gmail.com
  • 74.
  • 75. Referências •JHipster ( http://www.jhipster.tech ) •Spring ( https://spring.io/ ) •API RESTful avançada com Spring Boot e Java 8 ( https://www.udemy.com/api- restful-avancada-spring-boot-java-8 )