Se você está desenvolvendo uma aplicação com Spring Boot, em algum momento, precisará criar endpoints que permitam acessar e manipular dados armazenados em seu banco de dados. O @GetMapping
é uma das anotações mais utilizadas no Spring Boot para criar endpoints HTTP GET, que são essenciais para recuperar dados.
Neste artigo, vamos explorar como usar a anotação @GetMapping
para buscar todos os registros de uma entidade usando o Spring Boot. Usaremos um exemplo prático para ilustrar como isso é feito.
O que é @GetMapping
?
A anotação @GetMapping
é usada em métodos de um controlador Spring para mapear solicitações HTTP GET para métodos específicos. Em outras palavras, é como você diz ao Spring que um determinado método deve ser invocado quando uma solicitação GET for recebida em uma URL específica.
Exemplo Prático: Buscar Todos os Registros
Imagine que você tem uma aplicação Spring Boot com uma entidade chamada Link
, e deseja criar um endpoint que retorne todos os links armazenados em seu banco de dados. Aqui está como você pode fazer isso.
Estrutura do Projeto
Para este exemplo, vamos assumir que você já configurou seu projeto Spring Boot e tem uma classe de entidade Link
e um repositório que estende JpaRepository
.
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Link {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String url;
private String description;
// Getters and Setters
}
O Repositório
Primeiro, você precisa de um repositório para sua entidade Link
. Este repositório será usado para interagir com o banco de dados.
import org.springframework.data.jpa.repository.JpaRepository;
public interface LinkRepository extends JpaRepository<Link, Long> {
}
O Controlador
Agora, vamos criar um controlador para expor um endpoint que retorne todos os registros da entidade Link
.
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/api/links")
public class LinkController {
@Autowired
private LinkRepository repository;
@GetMapping
public List<Link> findAll() {
return repository.findAll();
}
}
Explicação do Código
@RestController
: Indica que esta classe é um controlador onde cada método retorna um objeto de domínio em vez de uma visão. É uma combinação de@Controller
e@ResponseBody
.@RequestMapping("/api/links")
: Mapeia solicitações HTTP para/api/links
para métodos noLinkController
.@Autowired
: Injeta automaticamente uma instância doLinkRepository
no controlador.@GetMapping
: Mapeia solicitações HTTP GET para o métodofindAll()
. Quando uma solicitação GET for feita para/api/links
, o Spring chamará este método.findAll()
: Este método usa o repositório para buscar todos os registros da entidadeLink
e os retorna como uma lista.
Testando o Endpoint
Com tudo configurado, você pode iniciar sua aplicação Spring Boot. Use uma ferramenta como o Postman ou o cURL para enviar uma solicitação GET para http://localhost:8080/api/links
. Você deve ver uma lista de todos os links armazenados no banco de dados.
Considerações Finais
O @GetMapping
é uma anotação poderosa e fácil de usar para criar endpoints GET em sua aplicação Spring Boot. Neste exemplo, mostramos como você pode utilizá-lo para buscar todos os registros de uma entidade. Com essa base, você pode explorar mais funcionalidades e criar APIs robustas e eficientes.