API REST de gerenciamento de produtos desenvolvida durante o curso Java Expert da Udemy.
Este projeto é uma API RESTful construída com Spring Boot 3 para demonstrar os fundamentos de desenvolvimento de APIs com Java moderno. O sistema permite criar, consultar, atualizar e deletar produtos (CRUD completo).
| Tecnologia | Versão | Descrição |
|---|---|---|
| Java | 21 | Linguagem principal |
| Spring Boot | 3.2.5 | Framework base da aplicação |
| Spring Web | - | Criação de endpoints REST |
| Spring Data JPA | - | Camada de persistência/ORM |
| H2 Database | - | Banco de dados em memória |
| Lombok | - | Redução de boilerplate (getters, setters, etc.) |
| Spring Boot DevTools | - | Reload automático em desenvolvimento |
| Maven | - | Gerenciamento de dependências e build |
src/
└── main/
├── java/com/rodrigo/produtosapi/
│ ├── ProdutosApiApplication.java # Classe principal / entry point
│ ├── controller/
│ │ └── ProdutoController.java # Endpoints REST
│ ├── model/
│ │ └── Produto.java # Entidade JPA
│ └── repository/
│ └── ProdutoRepository.java # Interface de acesso ao banco
└── resources/
├── application.yml # Configurações da aplicação
└── data.sql # Script de criação do schema
- Configuracao do projeto via Spring Initializr
- Estrutura de pacotes (controller, model, repository)
- Anotacao
@SpringBootApplicatione funcionamento do contexto Spring
- Mapeamento objeto-relacional com
@Entitye@Table - Definicao de chave primaria com
@Ide@Column - Uso de POJO (Plain Old Java Object) como entidade persistida
- Extensao de
JpaRepository<T, ID>para operacoes CRUD automaticas - Criacao de queries derivadas de metodo:
findByNome(String nome)
@RestControllere@RequestMappingpara mapear rotas- Verbos HTTP mapeados com
@PostMapping,@GetMapping,@PutMapping,@DeleteMapping - Leitura de corpo da requisicao com
@RequestBody - Leitura de parametros de URL com
@PathVariablee@RequestParam - Geracao de ID unico com
UUID.randomUUID()
- Configuracao via
application.yml - Console web disponivel em
/h2-console - Script SQL (
data.sql) para criacao automatica do schema
- Datasource, dialeto JPA e console H2 configurados de forma declarativa
Base URL: http://localhost:8080
| Metodo | Endpoint | Descricao |
|---|---|---|
POST |
/produtos |
Cadastra um novo produto |
GET |
/produtos/{id} |
Busca produto pelo ID |
GET |
/produtos?nome={nome} |
Busca produtos pelo nome |
PUT |
/produtos/{id} |
Atualiza os dados de um produto |
DELETE |
/produtos/{id} |
Remove um produto pelo ID |
Cadastrar produto (POST /produtos)
{
"nome": "Notebook",
"descricao": "Notebook Dell Inspiron 15",
"preco": 3599.90
}Resposta (200 OK)
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"nome": "Notebook",
"descricao": "Notebook Dell Inspiron 15",
"preco": 3599.90
}- Java 21+
- Maven 3.8+
# Clonar o repositorio
git clone <url-do-repositorio>
# Entrar no diretorio
cd produtosapi
# Executar com Maven Wrapper
./mvnw spring-boot:runA API estara disponivel em http://localhost:8080.
O console do banco H2 estara disponivel em http://localhost:8080/h2-console
com as credenciais configuradas no application.yml:
- JDBC URL:
jdbc:h2:mem:produtos - Username:
sa - Password:
admin
Java Expert — Udemy Conteudo voltado para o desenvolvimento de aplicacoes Java com Spring Boot, abordando desde os fundamentos ate boas praticas de desenvolvimento de APIs RESTful.