O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

JHipster - Produtividade e Maturidade em suas mãos

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
Migrando para o Angular 2
Migrando para o Angular 2
Carregando em…3
×

Confira estes a seguir

1 de 75 Anúncio

JHipster - Produtividade e Maturidade em suas mãos

Baixar para ler offline

Apresentação utilizada no JavaDay 2017. Um rápida introdução ao JHipster e muita prática.
O resultado foi a aplicação funcionando completamente na núvem Heroku.

Apresentação utilizada no JavaDay 2017. Um rápida introdução ao JHipster e muita prática.
O resultado foi a aplicação funcionando completamente na núvem Heroku.

Anúncio
Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a JHipster - Produtividade e Maturidade em suas mãos (20)

Anúncio

Mais recentes (20)

JHipster - Produtividade e Maturidade em suas mãos

  1. 1. Produtividade e Maturidade em suas mãos Thiago Soares Presented by Thiago.soares.jr@gmail.com JHipster
  2. 2. Agenda 1. Nosso Objetivo 2. O Desafio 3. JHipster 4. Spring 5. Deploy
  3. 3. Objetivos de Hoje •Conhecer o JHipster •Conhecer o Heroku •Conhecer o Spring
  4. 4. 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 .
  5. 5. Nosso Desafio
  6. 6. 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
  7. 7. 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
  8. 8. 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)
  9. 9. Tempo: 1 Hora.
  10. 10. Opções ( ) Pedir demissão ( ) Sair correndo ( ) Fingir dor de barriga ( ) Usar uma boa ferramenta!
  11. 11. Opções ( ) Pedir demissão ( ) Sair correndo ( ) Fingir dor de barriga ( X ) Usar uma boa ferramenta!
  12. 12. JHipster
  13. 13. Mais um scaffolding !?
  14. 14. www.jhipster.tech
  15. 15. O que é o Jhipster JHipster is a development platform to generate, develop and deploy Spring Boot + Angular + Bootstrap Web applications and Spring microservices.
  16. 16. 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
  17. 17. 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
  18. 18. Client Side Options
  19. 19. First Topic
  20. 20. Hands On
  21. 21. Getting Started •mkdir javaday •cd javaday •code . ( Visual Studio)
  22. 22. 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
  23. 23. yarn global add generator-jhipster
  24. 24. jhipster
  25. 25. Waiting build……..
  26. 26. JHipster Registry
  27. 27. Não curte o Shell? Sério ?
  28. 28. 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!
  29. 29. Vamos ver Funcionando então!
  30. 30. ./mvnw
  31. 31. yarn start
  32. 32. E as User Stories ? Vou ter que fazer na mão ?
  33. 33. CRUDs e a JDL
  34. 34. Mãos à Obra. Vamos criar esses Cruds
  35. 35. Customizando o Modelo •Vamos ajustar alguns relacionamentos •Remover •Adicionar
  36. 36. jhipster import-jdl jhipster-jdl.jh
  37. 37. 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
  38. 38. Como está nossa app agora?
  39. 39. Social Login
  40. 40. 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
  41. 41. Deploy
  42. 42. Deploy ServerLess •A aplicação funcionando sem um servidor •Como: •mvn package •./target/java-day-0.0.1-SNAPSHOT.war
  43. 43. 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
  44. 44. Spring Boot
  45. 45. 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)
  46. 46. 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"; } } }
  47. 47. 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>
  48. 48. 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.
  49. 49. Dependency Injection •@Inject ou @Autowired @Inject private AlgumServicoComplexo servico; @Autowired private OutroObjetoQualquer objInjetado; •Construtores public class RegionResource { public RegionResource(RegionService regionService) { this.regionService = regionService; } }
  50. 50. Customizando o Código Gerado
  51. 51. Repository - Spring Data •Exemplo: Filtrar pelo usuário logado •Alteração do Modelo
  52. 52. jhipster import-jdl jhipster-jdl.jh
  53. 53. Repository - Spring Data •Mecanismo: • find…By • read…By (Stream<T> Java 8) • query…By • count…By • get…By
  54. 54. 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();
  55. 55. 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);
  56. 56. Services •@Service •@Transactional •@Transactional(readOnly = true) •Dependency Injection
  57. 57. Rest - Resources •@RestController •@RequestMapping("/api") •@GetMapping("/employees") •@PostMapping("/employees") •@PutMapping("/employees") •@DeleteMapping("/employees/{id}")
  58. 58. Interface
  59. 59. O Banco de Dados
  60. 60. 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.
  61. 61. Thanks! No License Statements @thiagosoaresjr /thiagosoares Thiago.soares.jr@gmail.com
  62. 62. 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 )

×