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.
-
- 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
-
- Registrar usuários pelo banco de dados com diferentes privilégios de acessos às funcionalidades
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 |
- OpenJDK 16 - JVM HotSpot
- Docker Desktop for Windows v3.0.0
- Eclipse IDE 2020-09 for Enterprise Java
- Postman 7.36
- Apache Maven 3.6.3
O projeto foi construído com a IDE Eclipse. Para executá-lo:
-
Baixe e instale o Docker Desktop
-
Faça o Download do zip do projeto ou clone o repositório Git e extraia o conteúdo do arquivado compactado
-
Navegue até a pasta do projeto e abra o Prompt de Comando do Windows ou Terminal do GNU/Linux
-
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.
-
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 comandomysql -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.
-
Abra o Eclipse IDE
-
Importe o projeto baixado: Vá em File > Open Projects from File System. Selecione a pasta pela opção "Directory" e pressione Finish.
-
Espere o Maven baixar todas as dependências.
-
Abra a classe java "Springboot2EssentialsApplication" e execute o método main.
-
Para testar os recursos das URLs descritas acima, use alguma ferramenta de testes de API, como o Postman.
-
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 URLhtto://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.
-
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:
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.
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.
Agora é possível monitorar as informações sobre a aplicação, uso de processamento e memória RAM pela JVM sem muito esforço!
-
Para executar os testes de integração da classe "AnimeControllerIT" é necessário ter o Apache Maven instalado no computador.
-
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
. -
Espere o Maven baixar todas as dependências.
-
Os testes de integração serão executados automaticamente.