Skip to content

Latest commit

 

History

History
73 lines (70 loc) · 2.54 KB

clubes.md

File metadata and controls

73 lines (70 loc) · 2.54 KB

API de Clubes

  • mn create-app clubes --features=hibernate-jpa,file-watch,discovery-consul,management,graal-native-image
  • docker run -d --name=dev-consul -e CONSUL_BIND_INTERFACE=eth0 -e CONSUL_UI_BETA=true -p 8500:8500 consul
  • cd clubes
  • ./gradlew run --continuous
  • mn create-controller clubes.controller.clubes
  • mn create-client clubes.client.clubes
  • Abrir IDE no diretório atual
  • Alterar classe ClubesController para retornar "Ola, mundo!"
  • curl 0:8080/clubes
  • Inserir lombok como dependência do projeto no arquivo build.gradle
      compileOnly 'org.projectlombok:lombok:1.18.8'
      annotationProcessor 'org.projectlombok:lombok:1.18.8'
  • Criar classe de dominio Clube com id, nome, estadio
  • Alterar controller para retornar JSON do clube
  • curl 0:8080/clubes
  • mn create-bean clubes.repository.clubesRepository
  • mn create-bean clubes.service.clubesService
  • Implementar interface ClubesRepository coms os métodos:
        Single<Clube> save(Clube clube);
        Maybe<Clube> findClube(Long id);
        Flowable<Clube> findAll();
        Single<Long> count();
  • Alterar application.yml
    jpa:
      default:
        packages-to-scan:
          - 'clubes.domain'
        properties:
          hibernate:
            hbm2ddl.auto: update
            show_sql: true
  • Implementar DataCreator:
        @Singleton
        @AllArgsConstructor
        public class DataCreator implements ApplicationEventListener<ServerStartupEvent> {
    
            private ClubesRepository clubesRepository;
    
            @Override
            public void onApplicationEvent(ServerStartupEvent event) {
                if (this.clubesRepository.count().blockingGet() > 0) {
                    return;
                }
                this.clubesRepository.save(new Clube("America de Natal", "Arena das Dunas"));
                this.clubesRepository.save(new Clube("ABC FC", "Frasqueirão"));
            }
        }
  • Alterar ClubesServices para delegar chamadas aos métodos do repository
  • Criar ClubesApi:
        public interface ClubesApi {
            @Get
            Flowable<Clube> index();
            @Get("/{id}")
            Maybe<Clube> show(Long id);
        }
  • Alterar ClubesClient para herdar de ClubesApi
  • Alterar ClubesController para implementar interface da API
  • Para de rodar a aplicação via gradle
  • Alterar ClubesControllerTest para validar dois endpoints expostos
  • Mostrar Dockerfile com a construção do binário da GraalVM
  • Rodar aplicação a partir de binário existente