{"id":18369557,"url":"https://github.com/henriqueotogami/konan","last_synced_at":"2026-04-13T21:01:27.900Z","repository":{"id":149912917,"uuid":"592546256","full_name":"henriqueotogami/konan","owner":"henriqueotogami","description":"Estudos de Spring Boot.","archived":false,"fork":false,"pushed_at":"2025-03-04T05:34:59.000Z","size":463,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-04T06:28:47.202Z","etag":null,"topics":["html5","intellij-idea","java-8","macos-setup","maven","spring-boot","spring-devtools","spring-starter-test","spring-starter-web"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/henriqueotogami.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-24T00:30:50.000Z","updated_at":"2025-03-04T05:35:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"d49c87d2-32ef-42cd-8686-20d989be89cc","html_url":"https://github.com/henriqueotogami/konan","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriqueotogami%2Fkonan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriqueotogami%2Fkonan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriqueotogami%2Fkonan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriqueotogami%2Fkonan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/henriqueotogami","download_url":"https://codeload.github.com/henriqueotogami/konan/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248281424,"owners_count":21077423,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["html5","intellij-idea","java-8","macos-setup","maven","spring-boot","spring-devtools","spring-starter-test","spring-starter-web"],"created_at":"2024-11-05T23:29:46.754Z","updated_at":"2026-04-13T21:01:27.895Z","avatar_url":"https://github.com/henriqueotogami.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Estudos de Spring Boot\n\n\u003cimg width=\"auto\" src=\"https://github.com/henriqueotogami/konan/blob/main/konan.png?raw=true\"\u003e\n\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n\u003cimg alt=\"GitHub last commit\" src=\"https://img.shields.io/github/last-commit/henriqueotogami/konan\"\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cimg src=\"https://img.shields.io/github/issues/henriqueotogami/konan\"\u003e\n\u003cimg src=\"https://img.shields.io/github/forks/henriqueotogami/konan\"\u003e\n\u003cimg src=\"https://img.shields.io/github/stars/henriqueotogami/konan\"\u003e\n\u003cimg src=\"https://img.shields.io/github/license/henriqueotogami/konan\"\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cdiv align=center\u003e\n\u003ca href=\"https://wakatime.com/badge/user/1e53636e-c916-4d50-9ce1-f3ac75a883e3/project/b5eb52f6-55bb-4206-a893-752217347e99\"\u003e\u003cimg src=\"https://wakatime.com/badge/user/1e53636e-c916-4d50-9ce1-f3ac75a883e3/project/b5eb52f6-55bb-4206-a893-752217347e99.svg\" alt=\"wakatime\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003chr\u003e\n\n\u003e 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.\n\n## 📋 Sobre o Projeto\n\nEste 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.\n\n## 📁 Estrutura do Projeto\n\n### Controllers (`src/main/java/br/com/otogamidev/konan/controller/`)\n- **ProductManager** - CRUD completo de produtos com endpoints REST (listar, buscar por ID, criar/atualizar, deletar, buscar por nome)\n- **ClientManager** - Endpoints de clientes demonstrando `@PathVariable` e `@RequestParam`\n- **CalculatorManager** - Calculadora via API com operações de adição e subtração\n- **HttpManager** - Demonstração dos métodos HTTP (GET, POST, PUT, PATCH, DELETE)\n\n### Entidades (`src/main/java/br/com/otogamidev/konan/model/entities/`)\n- **Product** - Entidade de produto com id, nome, preço e desconto (validações com Bean Validation)\n- **Client** - Entidade de cliente com id, nome e CPF\n\n### Repositórios (`src/main/java/br/com/otogamidev/konan/model/repositories/`)\n- **DataAccessProduct** - Interface JPA para persistência de produtos com busca por nome\n\n### Recursos Estáticos (`src/main/resources/`)\n- **form-page.html** - Página HTML para teste de requisições POST\n- **application.properties** - Configuração do banco de dados MySQL e JPA\n\n## 📂 Estrutura do repositório\n\n```\nLICENSE\nREADME.md\npom.xml\nkonan.png\nsrc/\n├── main/\n│   ├── java/br/com/otogamidev/konan/\n│   │   ├── KonanApplication.java          # Classe principal Spring Boot\n│   │   ├── controller/\n│   │   │   ├── ProductManager.java        # API REST de produtos\n│   │   │   ├── ClientManager.java         # API REST de clientes\n│   │   │   ├── CalculatorManager.java     # API de calculadora\n│   │   │   └── HttpManager.java           # Demonstração métodos HTTP\n│   │   └── model/\n│   │       ├── entities/\n│   │       │   ├── Product.java           # Entidade Produto\n│   │       │   └── Client.java            # Entidade Cliente\n│   │       └── repositories/\n│   │           └── DataAccessProduct.java # Repositório JPA\n│   └── resources/\n│       ├── application.properties         # Configurações da aplicação\n│       └── static/\n│           └── form-page.html             # Página de teste\n└── test/\n    └── java/br/com/otogamidev/konan/\n        └── TestKonanApplication.java      # Teste da aplicação\n```\n\n## 🛠️ Tecnologias Utilizadas\n\n- **Java 17** - Linguagem de programação\n- **Spring Boot 3.0** - Framework para aplicações Java\n- **Spring Web** - API REST e endpoints HTTP\n- **Spring Data JPA** - Persistência de dados com Hibernate\n- **Spring Validation** - Validação de beans (Bean Validation)\n- **MySQL** - Banco de dados relacional\n- **Maven** - Gerenciamento de dependências e build\n\n## 📝 Funcionalidades Principais\n\n### CRUD de Produtos (`/api/products`)\n- **GET** `/api/products` - Lista todos os produtos\n- **GET** `/api/products/{id}` - Busca produto por ID\n- **GET** `/api/products/name/{contains}` - Busca produtos por nome\n- **POST** `/api/products` - Cria novo produto\n- **PUT** `/api/products` - Atualiza produto existente\n- **DELETE** `/api/products/{id}` - Remove produto\n\n### Clientes (`/clients`)\n- **GET** `/clients` - Cliente por parâmetro `?id=`\n- **GET** `/clients/{id}` - Cliente por ID na URL\n- **GET** `/clients/whatever` - Retorna cliente de exemplo\n\n### Calculadora (`/calculator`)\n- **GET** `/calculator/add/{firstNumber}/{secondNumber}` - Soma\n- **GET** `/calculator/subtract?firstNumber=\u0026secondNumber=` - Subtração\n\n### Métodos HTTP (`/methods`)\n- **GET**, **POST**, **PUT**, **PATCH**, **DELETE** - Demonstração de cada verbo\n\n## 🚀 Como Executar\n\n### Pré-requisitos\n- Java 17 ou superior\n- Maven 3.6+\n- MySQL em execução (porta 3306)\n\n### Configuração do Banco de Dados\n1. Crie o banco de dados no MySQL:\n```sql\nCREATE DATABASE konan;\n```\n\n2. Configure as credenciais em `src/main/resources/application.properties`:\n```properties\nspring.datasource.username=root\nspring.datasource.password=sua_senha\n```\n\n### Executando a Aplicação\n\n```bash\n# Clonar o repositório\ngit clone https://github.com/henriqueotogami/konan.git\ncd konan\n\n# Executar com Maven\n./mvnw spring-boot:run\n\n# Ou compilar e executar o JAR\n./mvnw clean package\njava -jar target/konan-0.0.1-SNAPSHOT.jar\n```\n\nA aplicação estará disponível em: **http://localhost:8080**\n\n## 📚 Conteúdos Abordados\n\n- ✅ Configuração de projeto Spring Boot\n- ✅ Criação de APIs REST com `@RestController`\n- ✅ Mapeamento de URLs com `@RequestMapping`, `@GetMapping`, etc.\n- ✅ Parâmetros de requisição (`@PathVariable`, `@RequestParam`)\n- ✅ Persistência com Spring Data JPA e MySQL\n- ✅ Validação de dados com Bean Validation\n- ✅ Entidades e repositórios JPA\n- ✅ Diferentes verbos HTTP (GET, POST, PUT, PATCH, DELETE)\n\n## ⚙️ Como Funciona\n\n### Fluxo da API de Produtos\n1. O `ProductManager` expõe endpoints REST em `/api/products`\n2. Requisições são recebidas e processadas pelo Spring MVC\n3. O `DataAccessProduct` (CrudRepository) persiste no MySQL via JPA\n4. A entidade `Product` possui validações: nome obrigatório, preço ≥ 0, desconto entre 0 e 1\n5. A busca por nome usa `findByNameContainsIgnoreCase` (case insensitive)\n\n### Configuração JPA\n- `spring.jpa.hibernate.ddl-auto=update` - Schema atualizado automaticamente\n- Banco `konan` - Certifique-se de criá-lo antes de executar\n\n## Ambiente de Desenvolvimento\n\n### Sistema Operacional\nMacOS Monterey - Versão 12.6\n\n### IDE\nIntelliJ IDEA Community Edition 2022.2\n\n#### Plugins recomendados\n- [Atom Material Icons](https://plugins.jetbrains.com/plugin/10044-atom-material-icons)\n- [Codota AI Autocomplete for Java](https://plugins.jetbrains.com/plugin/7638-codota-ai-autocomplete-for-java-and-javascript)\n- [GitToolBox](https://plugins.jetbrains.com/plugin/7499-gittoolbox)\n- [Nyan Progress Bar](https://plugins.jetbrains.com/plugin/8575-nyan-progress-bar)\n- [Rainbow Brackets](https://plugins.jetbrains.com/plugin/10080-rainbow-brackets)\n- [Wakatime](https://wakatime.com)\n- [Xcode-Dark Theme](https://plugins.jetbrains.com/plugin/13106-xcode-dark-theme)\n\n## 📄 Licença\n\nEste projeto está licenciado sob a MIT License - veja o arquivo [LICENSE](LICENSE) para mais detalhes.\n\n## 📖 Referências\n\n- [Cod3r | Java 2022 Completo](https://www.udemy.com/course/fundamentos-de-programacao-com-java/) - Curso de referência\n- [Documentação Spring Boot](https://spring.io/projects/spring-boot)\n- [Spring Data JPA](https://spring.io/projects/spring-data-jpa)\n\n## Contribuições\n\n\u003e ### Caso você queira ajudar a melhorar este repositório, qualquer ajuda é bem-vinda.\n\n- [x] Faça um **fork** deste repositório (https://github.com/henriqueotogami/konan/fork)\n- [x] Crie um **branch** para adicionar as suas modificações `git checkout -b meu-novo-recurso`\n- [x] Faça um **commit** `git commit -am 'feature: Adicionando um novo recurso ...'`\n- [x] Faça um **push** `git push origin meu-novo-recurso`\n- [x] Crie uma nova **pull request** neste repositório\n\n**Depois que sua solicitação (pull request) for aceita e adicionada (merged) ao ramo principal (branch main), você pode excluir sua branch tranquilamente.**\n\n---\n\n### Hashtags\n#SpringBoot #Java #RESTAPI #JPA #MySQL #Maven #Backend #WebDevelopment #OpenSource #GitHub #CodeExamples #LearningJava\n\n### Meta Keywords\n```\nSpring Boot, Java, API REST, JPA, MySQL, Maven, CRUD, backend,\npersistência de dados, Bean Validation, Spring Data, demonstração HTTP,\naprender Spring, código exemplo, Henrique Matheus, otogamidev\n```\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cbr\u003e\n\n\u003e ### **Muito obrigado, e que a Força esteja com você.**\n\u003e\n\u003e ### Desenvolvido por **HMAP | Henrique Matheus Alves Pereira** 🦁\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenriqueotogami%2Fkonan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhenriqueotogami%2Fkonan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenriqueotogami%2Fkonan/lists"}