Skip to content

israelferreira/springboot2-essentials

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

springboot2-essentials

Esse repositório contém os arquivos do projeto Spring Boot 2 Essentials, desenvolvido pelo William Suane (DevDojo) e ensinado em um curso no YouTube. Esse software tem a temática de Animes (desenhos animados japoneses).

O projeto foi desenvolvido com a arquitetura REST usando o framework Spring Boot 2.5 no Java 16.

Funcionalidades do software

  • Anime

    • Cadastrar um novo anime no banco de dados
    • Pesquisar animes pelo nome
    • Buscar os animes cadastrados usando paginação
    • Buscar todos os animes cadastrados sem usar paginação
    • Buscar um anime pelo código de identificação
    • Remover um anime usando o código de identificação
    • Atualizar os dados de um anime
  • Segurança

    • Registrar usuários pelo banco de dados com diferentes privilégios de acessos às funcionalidades

URLs

Observação: Para executar as requisições é necessário fazer a autenticação do tipo Basic Auth usando usuário e senha. O software já vem com um usuário que fica salvo em memória, com privilégios de ADMIN e USER. Usuário: spring
Senha: boot

URL Método Descrição
http://localhost:8080/animes?page=0 GET Retorna os animes com paginação. A página inicial é 0 (zero). Cada página retorna 20 elementos por padrão, mas é possível alterar a quantidade com o parâmetro size, exemplo: /animes?page=0&size=50
http://localhost:8080/animes/all GET Retorna todos os animes sem usar paginação.
http://localhost:8080/animes/find/?name=Anime Name GET Faz uma pesquisa nos animes por nome pelo parâmetro da URL
http://localhost:8080/animes/{id} GET Retorna os dados de um anime baseado no ID
http://localhost:8080/animes POST Salva um anime no banco de dados
http://localhost:8080/animes/admin/{id} DELETE Deleta um anime baseado no ID
http://localhost:8080/animes PUT Atualiza os dados de um anime baseado no ID, o número do ID deve ser passado no corpo do JSON

Softwares usados no desenvolvimento


Como executar o projeto

O projeto foi construído com a IDE Eclipse. Para executá-lo:

  1. Baixe e instale o Docker Desktop

  2. Faça o Download do zip do projeto ou clone o repositório Git e extraia o conteúdo do arquivado compactado

  3. Navegue até a pasta do projeto e abra o Prompt de Comando do Windows ou Terminal do GNU/Linux

  4. Execute o comando docker-compose up. Ele irá criar um container chamado springboot2-essentials contendo as imagens do grafana, prometheus e banco de dados mysql.

docker-compose up

  1. Para ter acesso ao banco de dados MySQL Server 8, abra outra janela do Prompt de Comando/Terminal e execute o comando docker exec -it mysql bash -l, agora execute o comando mysql -uroot -p. O usuário do mysql nesse caso é o root, se for outro, altere o que está depois de -u. Digite a senha e pressione ENTER. Agora é possível criar e alterar schemas. Execute os scripts que estão no arquivo "anime-database-MySQL8.sql", eles irão criar o banco de dados com as tabelas necessárias para o funcionamento e também irá inserir alguns animes de exemplo e dois usuários para autenticação.
    docker exec
    mysql -u
    create database

  2. Abra o Eclipse IDE

  3. Importe o projeto baixado: Vá em File > Open Projects from File System. Selecione a pasta pela opção "Directory" e pressione Finish.

  4. Espere o Maven baixar todas as dependências.

  5. Abra a classe java "Springboot2EssentialsApplication" e execute o método main.

  6. Para testar os recursos das URLs descritas acima, use alguma ferramenta de testes de API, como o Postman.

  7. Esse projeto contém a ferramenta Swagger UI, que serve para documentar automaticamente uma API REST.
    Com o projeto em execução no container Apache, vá na URL htto://localhost:8080/swagger-ui.html, faça autenticação (usuário: spring, senha: boot). Nessa página é possível ver a API com os métodos (GET, POST, etc) e para que serve cada URL.
    swagger ui
    swagger ui

  8. O projeto contém o Spring Actuator, que é uma ferramente que auxilia a visualização de dados como saúde e métricas da aplicação.
    Também é possível adicionar informações importantes na API para outras pessoas lerem. Exemplo:
    Actuator


Monitoramento inteligente do sistema

O projeto contém o Prometheus, um serviço de monitoramento de métricas para a aplicação.

Ele é usado em conjunto com o Grafana, uma ferramenta que permite a visualização de informações em Dashboards dos dados coletados pelo Prometheus.

Nesse exemplo irei usar o dashboard JVM (Micrometer), que foi criado para monitorar softwares desenvolvidos em Java.

Acesse a URL http://localhost:3000, o usuário e senha por padrão é admin nos dois campos. Agora crie o data source do Prometheus ao clicar no ícone de engrenagem () na barra lateral e acessar a opção Data Sources. Configure do mesmo modo que está na imagem abaixo, e clique em Save & Test.

datasource
Após isso acesse na barra lateral o botão + e selecione Import. Cole o link do dashboard JVM Micrometer ou use o ID (4701) e selecione o data source do Prometheus que já foi configurado.
Clique em Import.

jvm micrometer

Agora é possível monitorar as informações sobre a aplicação, uso de processamento e memória RAM pela JVM sem muito esforço! grafana


Como executar os testes de integração

  1. Para executar os testes de integração da classe "AnimeControllerIT" é necessário ter o Apache Maven instalado no computador.

  2. Após ter instalado, navegue até a pasta do projeto, abra o Prompt de Comando ou PowerShell e execute o comando mvn test -Pintegration-tests.

  3. Espere o Maven baixar todas as dependências.

  4. Os testes de integração serão executados automaticamente.


Fim dos testes de integração


Autor

Feito por Israel Ferreira. 👋🏽 Entre em contato! Email Badge

About

Projeto para estudos do Spring Boot e arquitetura REST.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages