https://github.com/henriqueotogami/konan
Estudos de Spring Boot.
https://github.com/henriqueotogami/konan
html5 intellij-idea java-8 macos-setup maven spring-boot spring-devtools spring-starter-test spring-starter-web
Last synced: about 2 months ago
JSON representation
Estudos de Spring Boot.
- Host: GitHub
- URL: https://github.com/henriqueotogami/konan
- Owner: henriqueotogami
- License: mit
- Created: 2023-01-24T00:30:50.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-03-04T05:34:59.000Z (about 1 year ago)
- Last Synced: 2025-03-04T06:28:47.202Z (about 1 year ago)
- Topics: html5, intellij-idea, java-8, macos-setup, maven, spring-boot, spring-devtools, spring-starter-test, spring-starter-web
- Language: Java
- Homepage:
- Size: 452 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Estudos de Spring Boot

> Repositório com exercícios e códigos desenvolvidos durante o estudo de Spring Boot, contendo APIs REST, persistência de dados com JPA e exemplos de manipulação de requisições HTTP.
## 📋 Sobre o Projeto
Este projeto contém uma aplicação Spring Boot desenvolvida como parte do curso [Cod3r | Java 2022 Completo](https://www.udemy.com/course/fundamentos-de-programacao-com-java/). Os códigos incluem exemplos práticos de APIs REST, CRUD de produtos com persistência em MySQL, manipulação de diferentes verbos HTTP, calculadora via endpoints e gerenciamento de clientes com parâmetros de URL.
## 📁 Estrutura do Projeto
### Controllers (`src/main/java/br/com/otogamidev/konan/controller/`)
- **ProductManager** - CRUD completo de produtos com endpoints REST (listar, buscar por ID, criar/atualizar, deletar, buscar por nome)
- **ClientManager** - Endpoints de clientes demonstrando `@PathVariable` e `@RequestParam`
- **CalculatorManager** - Calculadora via API com operações de adição e subtração
- **HttpManager** - Demonstração dos métodos HTTP (GET, POST, PUT, PATCH, DELETE)
### Entidades (`src/main/java/br/com/otogamidev/konan/model/entities/`)
- **Product** - Entidade de produto com id, nome, preço e desconto (validações com Bean Validation)
- **Client** - Entidade de cliente com id, nome e CPF
### Repositórios (`src/main/java/br/com/otogamidev/konan/model/repositories/`)
- **DataAccessProduct** - Interface JPA para persistência de produtos com busca por nome
### Recursos Estáticos (`src/main/resources/`)
- **form-page.html** - Página HTML para teste de requisições POST
- **application.properties** - Configuração do banco de dados MySQL e JPA
## 📂 Estrutura do repositório
```
LICENSE
README.md
pom.xml
konan.png
src/
├── main/
│ ├── java/br/com/otogamidev/konan/
│ │ ├── KonanApplication.java # Classe principal Spring Boot
│ │ ├── controller/
│ │ │ ├── ProductManager.java # API REST de produtos
│ │ │ ├── ClientManager.java # API REST de clientes
│ │ │ ├── CalculatorManager.java # API de calculadora
│ │ │ └── HttpManager.java # Demonstração métodos HTTP
│ │ └── model/
│ │ ├── entities/
│ │ │ ├── Product.java # Entidade Produto
│ │ │ └── Client.java # Entidade Cliente
│ │ └── repositories/
│ │ └── DataAccessProduct.java # Repositório JPA
│ └── resources/
│ ├── application.properties # Configurações da aplicação
│ └── static/
│ └── form-page.html # Página de teste
└── test/
└── java/br/com/otogamidev/konan/
└── TestKonanApplication.java # Teste da aplicação
```
## 🛠️ Tecnologias Utilizadas
- **Java 17** - Linguagem de programação
- **Spring Boot 3.0** - Framework para aplicações Java
- **Spring Web** - API REST e endpoints HTTP
- **Spring Data JPA** - Persistência de dados com Hibernate
- **Spring Validation** - Validação de beans (Bean Validation)
- **MySQL** - Banco de dados relacional
- **Maven** - Gerenciamento de dependências e build
## 📝 Funcionalidades Principais
### CRUD de Produtos (`/api/products`)
- **GET** `/api/products` - Lista todos os produtos
- **GET** `/api/products/{id}` - Busca produto por ID
- **GET** `/api/products/name/{contains}` - Busca produtos por nome
- **POST** `/api/products` - Cria novo produto
- **PUT** `/api/products` - Atualiza produto existente
- **DELETE** `/api/products/{id}` - Remove produto
### Clientes (`/clients`)
- **GET** `/clients` - Cliente por parâmetro `?id=`
- **GET** `/clients/{id}` - Cliente por ID na URL
- **GET** `/clients/whatever` - Retorna cliente de exemplo
### Calculadora (`/calculator`)
- **GET** `/calculator/add/{firstNumber}/{secondNumber}` - Soma
- **GET** `/calculator/subtract?firstNumber=&secondNumber=` - Subtração
### Métodos HTTP (`/methods`)
- **GET**, **POST**, **PUT**, **PATCH**, **DELETE** - Demonstração de cada verbo
## 🚀 Como Executar
### Pré-requisitos
- Java 17 ou superior
- Maven 3.6+
- MySQL em execução (porta 3306)
### Configuração do Banco de Dados
1. Crie o banco de dados no MySQL:
```sql
CREATE DATABASE konan;
```
2. Configure as credenciais em `src/main/resources/application.properties`:
```properties
spring.datasource.username=root
spring.datasource.password=sua_senha
```
### Executando a Aplicação
```bash
# Clonar o repositório
git clone https://github.com/henriqueotogami/konan.git
cd konan
# Executar com Maven
./mvnw spring-boot:run
# Ou compilar e executar o JAR
./mvnw clean package
java -jar target/konan-0.0.1-SNAPSHOT.jar
```
A aplicação estará disponível em: **http://localhost:8080**
## 📚 Conteúdos Abordados
- ✅ Configuração de projeto Spring Boot
- ✅ Criação de APIs REST com `@RestController`
- ✅ Mapeamento de URLs com `@RequestMapping`, `@GetMapping`, etc.
- ✅ Parâmetros de requisição (`@PathVariable`, `@RequestParam`)
- ✅ Persistência com Spring Data JPA e MySQL
- ✅ Validação de dados com Bean Validation
- ✅ Entidades e repositórios JPA
- ✅ Diferentes verbos HTTP (GET, POST, PUT, PATCH, DELETE)
## ⚙️ Como Funciona
### Fluxo da API de Produtos
1. O `ProductManager` expõe endpoints REST em `/api/products`
2. Requisições são recebidas e processadas pelo Spring MVC
3. O `DataAccessProduct` (CrudRepository) persiste no MySQL via JPA
4. A entidade `Product` possui validações: nome obrigatório, preço ≥ 0, desconto entre 0 e 1
5. A busca por nome usa `findByNameContainsIgnoreCase` (case insensitive)
### Configuração JPA
- `spring.jpa.hibernate.ddl-auto=update` - Schema atualizado automaticamente
- Banco `konan` - Certifique-se de criá-lo antes de executar
## Ambiente de Desenvolvimento
### Sistema Operacional
MacOS Monterey - Versão 12.6
### IDE
IntelliJ IDEA Community Edition 2022.2
#### Plugins recomendados
- [Atom Material Icons](https://plugins.jetbrains.com/plugin/10044-atom-material-icons)
- [Codota AI Autocomplete for Java](https://plugins.jetbrains.com/plugin/7638-codota-ai-autocomplete-for-java-and-javascript)
- [GitToolBox](https://plugins.jetbrains.com/plugin/7499-gittoolbox)
- [Nyan Progress Bar](https://plugins.jetbrains.com/plugin/8575-nyan-progress-bar)
- [Rainbow Brackets](https://plugins.jetbrains.com/plugin/10080-rainbow-brackets)
- [Wakatime](https://wakatime.com)
- [Xcode-Dark Theme](https://plugins.jetbrains.com/plugin/13106-xcode-dark-theme)
## 📄 Licença
Este projeto está licenciado sob a MIT License - veja o arquivo [LICENSE](LICENSE) para mais detalhes.
## 📖 Referências
- [Cod3r | Java 2022 Completo](https://www.udemy.com/course/fundamentos-de-programacao-com-java/) - Curso de referência
- [Documentação Spring Boot](https://spring.io/projects/spring-boot)
- [Spring Data JPA](https://spring.io/projects/spring-data-jpa)
## Contribuições
> ### Caso você queira ajudar a melhorar este repositório, qualquer ajuda é bem-vinda.
- [x] Faça um **fork** deste repositório (https://github.com/henriqueotogami/konan/fork)
- [x] Crie um **branch** para adicionar as suas modificações `git checkout -b meu-novo-recurso`
- [x] Faça um **commit** `git commit -am 'feature: Adicionando um novo recurso ...'`
- [x] Faça um **push** `git push origin meu-novo-recurso`
- [x] Crie uma nova **pull request** neste repositório
**Depois que sua solicitação (pull request) for aceita e adicionada (merged) ao ramo principal (branch main), você pode excluir sua branch tranquilamente.**
---
### Hashtags
#SpringBoot #Java #RESTAPI #JPA #MySQL #Maven #Backend #WebDevelopment #OpenSource #GitHub #CodeExamples #LearningJava
### Meta Keywords
```
Spring Boot, Java, API REST, JPA, MySQL, Maven, CRUD, backend,
persistência de dados, Bean Validation, Spring Data, demonstração HTTP,
aprender Spring, código exemplo, Henrique Matheus, otogamidev
```
> ### **Muito obrigado, e que a Força esteja com você.**
>
> ### Desenvolvido por **HMAP | Henrique Matheus Alves Pereira** 🦁