Objetivo do Artigo
Neste artigo, os estudantes irão:
- Compreender a estrutura de um projeto Spring Boot.
- Aprender sobre os principais componentes: Controller, Service e Repository.
- Utilizar o Lombok para simplificar o código.
- Implementar um CRUD básico sem banco de dados.
Caso não tenha lido o post anterior: https://kanechan.com.br/introducao-ao-backend-e-configuracao-do-ambiente/
Para esse projeto pode adicionar as seguintes dependências:

1. Estrutura de um Projeto Spring Boot
Ao criar um projeto com o Spring Boot, obtemos a seguinte estrutura:
meu-projeto/
│── src/
│ ├── main/java/com/exemplo/
│ │ ├── MeuProjetoApplication.java # Classe principal
│ │ ├── controller/ # Camada de controle
│ │ ├── service/ # Camada de serviço
│ │ ├── repository/ # Camada de acesso a dados
│ │ ├── model/ # Modelos de entidade
│ ├── main/resources/
│ │ ├── application.properties # Configurações do projeto
│── pom.xml # Dependências do projeto
2. Conceito de Camadas no Spring Boot
2.1 Controller (Camada de Controle)
- Responsável por expor as APIs REST e gerenciar as requisições HTTP.
- Utiliza anotações como
@RestController
para indicar que a classe manipula requisições. - Define os endpoints e recebe dados enviados pelo cliente.
Exemplo:
@RestController
@RequestMapping("/api/produtos")
public class ProdutoController {
@GetMapping
public String listarProdutos() {
return "Lista de produtos";
}
}
2.2 Service (Camada de Serviço)
- Contém a lógica de negócio e regras da aplicação.
- Utiliza
@Service
para indicar que é um componente de serviço. - O Controller delega a responsabilidade para essa camada.
Exemplo:
@Service
public class ProdutoService {
public String obterMensagem() {
return "Mensagem da lógica de negócio";
}
}
2.3 Repository (Camada de Repositório)
- Responsável pelo acesso aos dados, como conexão com banco de dados.
- Utiliza
@Repository
para indicar que é uma classe de persistência. - Quando há banco de dados, estende
JpaRepository
para facilitar operações.
Exemplo:
@Repository
public interface ProdutoRepository extends JpaRepository<Produto, Long> {
List<Produto> findByNome(String nome);
}
3. Criando um CRUD Simples (Sem Banco de Dados)
3.1 Criando a Entidade Produto
Dentro do pacote model
, crie um arquivo Produto.java:
package com.exemplo.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Produto {
private Long id;
private String nome;
private Double preco;
}
Explicação:
@Data
: Gera automaticamente getters, setters etoString()
.@AllArgsConstructor
: Gera um construtor com todos os atributos.@NoArgsConstructor
: Gera um construtor vazio.
3.2 Criando o Serviço ProdutoService
Dentro do pacote service
, crie o arquivo ProdutoService.java:
package com.exemplo.service;
import com.exemplo.model.Produto;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
@Service
public class ProdutoService {
private List<Produto> produtos = new ArrayList<>();
public List<Produto> listarProdutos() {
return produtos;
}
public Produto adicionarProduto(Produto produto) {
produtos.add(produto);
return produto;
}
}
3.3 Criando o Controller ProdutoController
Dentro do pacote controller
, crie o arquivo ProdutoController.java:
package com.exemplo.controller;
import com.exemplo.model.Produto;
import com.exemplo.service.ProdutoService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/produtos")
public class ProdutoController {
private final ProdutoService produtoService;
public ProdutoController(ProdutoService produtoService) {
this.produtoService = produtoService;
}
@GetMapping
public List<Produto> listarProdutos() {
return produtoService.listarProdutos();
}
@PostMapping
public Produto adicionarProduto(@RequestBody Produto produto) {
return produtoService.adicionarProduto(produto);
}
}
3.4 Testando a API
- Executar a aplicação:
./mvnw spring-boot:run
- Testar os endpoints no Postman:
GET http://localhost:8080/api/produtos
→ Lista todos os produtos.POST http://localhost:8080/api/produtos
(Body JSON):{ "id": 1, "nome": "Notebook", "preco": 2500.0 }
4. Exercício para os Alunos
Crie um CRUD básico para gerenciar Clientes, seguindo os mesmos passos:
- Criar a classe Cliente dentro de
model
. - Criar a classe ClienteService dentro de
service
. - Criar a classe ClienteController dentro de
controller
. - Testar os endpoints via Postman.
Dica:
- Cliente deve ter id, nome e email.
- Utilize o mesmo padrão da API de Produtos.
Conclusão
Neste artigo, aprendemos: ✔ A estrutura de um projeto Spring Boot. ✔ A separação por camadas (Controller, Service, Repository). ✔ Como utilizar o Lombok para simplificar o código. ✔ Implementamos um CRUD sem banco de dados.
No próximo artigo, vamos adicionar banco de dados com JPA e Hibernate! 🚀