Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Spring MVC | Fundamentos do Spring Boot
Spring Boot Backend

bookSpring MVC

Por que utilizar o Spring MVC

Spring MVC auxilia na organização de uma aplicação web ao seguir o princípio da separação de responsabilidades, facilitando o desenvolvimento, teste e manutenção do código. Oferece um framework para criação de páginas web e tratamento de requisições de usuários, além de possibilitar a integração com a lógica de negócio e bancos de dados.

Em nossa aplicação, utilizamos uma arquitetura em três camadas para separar a lógica em módulos distintos. Temos as camadas repository, service e controller. Essa separação facilita a manutenção e o teste da aplicação.

Anotações Principais e Seu Papel

Para cada camada, existem anotações específicas, essenciais para que o Spring reconheça e registre automaticamente os componentes no contexto da aplicação (iremos abordar este conceito posteriormente). Isso contribui para a manutenção de uma arquitetura mais limpa e melhora a legibilidade do código.

Anotação da Camada Repository

A anotação @Repository é utilizada para indicar uma classe que interage com o banco de dados. Essas classes normalmente contêm métodos para realizar operações CRUD (Create, Read, Update, Delete).

UserRepository.java

UserRepository.java

copy

Neste exemplo, UserRepository é marcado como um repositório, permitindo que o Spring gerencie exceções relacionadas ao acesso a dados e o integre automaticamente na aplicação.

Anotação da Camada de Serviço

A anotação @Service é utilizada para designar uma classe como componente da lógica de negócios. Essas classes contêm métodos que implementam as regras e operações de negócio da aplicação.

UserService.java

UserService.java

copy

A anotação @Service indica que esta classe contém a lógica de negócio da aplicação, facilitando seu uso em outras partes da aplicação. Isso simplifica o desenvolvimento, pois não é necessário criar manualmente instâncias desta classe — o Spring faz isso automaticamente.

Anotação da Camada Controller

Como a camada de controlador serve como o ponto de interação entre o cliente e nossa aplicação, é necessário estabelecer endpoints para que os clientes possam acessá-la. Isso envolve associar URLs específicas a cada método, permitindo que os clientes interajam diretamente com esses métodos.

Para isso, é necessário anotar a classe como @Controller e definir um método que atuará como o manipulador de requisições.

Main.java

Main.java

copy

A anotação @RequestMapping é utilizada para vincular requisições HTTP a métodos específicos no controlador. Ela permite especificar quais padrões de URL e tipos de requisições (como GET ou POST) um método deve responder. Por exemplo, neste caso, o método home() responderá a requisições GET feitas para a URL raiz.

Quando um usuário acessa example.com/, seu navegador envia uma requisição HTTP GET para o servidor, que chega até a aplicação Spring. O framework Spring encontra o @RequestMapping correspondente no HomeController, chama o método home() para tratar a requisição e, em seguida, envia a resposta apropriada de volta ao navegador do usuário.

Existem anotações que fornecem um mapeamento mais preciso para o tipo de método de requisição, como @GetMapping, @PostMapping, @DeleteMapping, entre outras. Em seus atributos, basta especificar a URL que pode ser utilizada para acessá-las.

Main.java

Main.java

copy

Neste exemplo, se acessarmos a URL /home, seremos direcionados ao método home() APENAS se for uma requisição GET. Se for utilizado um tipo diferente de método de requisição, o servidor responderá com um erro 404 Not Found para essa URL.

@RequestParam

O que são parâmetros de requisição da URL? São os parâmetros que aparecem após o ponto de interrogação na URL. Por exemplo, se temos o endereço -> example.com/home?name=Alex (chave = name, valor = Alex), podemos recuperar diretamente o parâmetro (name) no método welcomeUser().

Main.java

Main.java

copy

Aqui, o parâmetro name é extraído da URL (/home?name=Alex) e passado para o método welcomeUser().

Também é possível extrair mais de um parâmetro, não apenas um único. Todos os parâmetros na URL devem ser separados pelo símbolo &. Por exemplo: example.com/home?name=Alex&age=20.

Main.java

Main.java

copy

Neste exemplo, o endpoint /home pode ser acessado por meio de uma URL como example.com/home?name=Alex&age=20, onde name e age são os parâmetros passados para o método.

@PathVariable

No Spring MVC, a anotação @PathVariable é utilizada para vincular uma variável presente na URL diretamente a um parâmetro de método. Permite capturar valores dinâmicos da URL e utilizá-los dentro do método.

Caso seja necessário definir uma URL de forma dinâmica, ou seja, passar um valor diretamente na própria URL, pode-se utilizar a anotação @PathVariable.

Por exemplo, se houver um padrão de URL como /users/{id}, é possível utilizar @PathVariable para acessar a parte {id} da URL e passá-la como parâmetro para o método.

Main.java

Main.java

copy

Neste exemplo, o id é extraído da URL (/user/123) e passado para o método getUser(), onde o valor 123 é atribuído ao parâmetro userId.

Essas anotações auxiliam os desenvolvedores a configurar facilmente o tratamento de requisições HTTP, vincular dados a objetos e gerenciar respostas, aprimorando a legibilidade e a manutenibilidade do código.

Resumo

O Spring MVC simplifica o desenvolvimento de aplicações web ao separar o tratamento de requisições, a lógica da aplicação e a renderização da visualização. Os controladores, marcados com a anotação @Controller ou @RestController, tratam as requisições e retornam dados para exibição.

1. O que a anotação @Controller faz no Spring MVC?

2. Qual anotação de método é utilizada para lidar com GET requests no Spring MVC?

question mark

O que a anotação @Controller faz no Spring MVC?

Select the correct answer

question mark

Qual anotação de método é utilizada para lidar com GET requests no Spring MVC?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

What is the difference between @RequestParam and @PathVariable?

Can you explain more about the three-tier architecture in Spring MVC?

How does Spring automatically create instances of annotated classes?

Awesome!

Completion rate improved to 3.45

bookSpring MVC

Deslize para mostrar o menu

Por que utilizar o Spring MVC

Spring MVC auxilia na organização de uma aplicação web ao seguir o princípio da separação de responsabilidades, facilitando o desenvolvimento, teste e manutenção do código. Oferece um framework para criação de páginas web e tratamento de requisições de usuários, além de possibilitar a integração com a lógica de negócio e bancos de dados.

Em nossa aplicação, utilizamos uma arquitetura em três camadas para separar a lógica em módulos distintos. Temos as camadas repository, service e controller. Essa separação facilita a manutenção e o teste da aplicação.

Anotações Principais e Seu Papel

Para cada camada, existem anotações específicas, essenciais para que o Spring reconheça e registre automaticamente os componentes no contexto da aplicação (iremos abordar este conceito posteriormente). Isso contribui para a manutenção de uma arquitetura mais limpa e melhora a legibilidade do código.

Anotação da Camada Repository

A anotação @Repository é utilizada para indicar uma classe que interage com o banco de dados. Essas classes normalmente contêm métodos para realizar operações CRUD (Create, Read, Update, Delete).

UserRepository.java

UserRepository.java

copy

Neste exemplo, UserRepository é marcado como um repositório, permitindo que o Spring gerencie exceções relacionadas ao acesso a dados e o integre automaticamente na aplicação.

Anotação da Camada de Serviço

A anotação @Service é utilizada para designar uma classe como componente da lógica de negócios. Essas classes contêm métodos que implementam as regras e operações de negócio da aplicação.

UserService.java

UserService.java

copy

A anotação @Service indica que esta classe contém a lógica de negócio da aplicação, facilitando seu uso em outras partes da aplicação. Isso simplifica o desenvolvimento, pois não é necessário criar manualmente instâncias desta classe — o Spring faz isso automaticamente.

Anotação da Camada Controller

Como a camada de controlador serve como o ponto de interação entre o cliente e nossa aplicação, é necessário estabelecer endpoints para que os clientes possam acessá-la. Isso envolve associar URLs específicas a cada método, permitindo que os clientes interajam diretamente com esses métodos.

Para isso, é necessário anotar a classe como @Controller e definir um método que atuará como o manipulador de requisições.

Main.java

Main.java

copy

A anotação @RequestMapping é utilizada para vincular requisições HTTP a métodos específicos no controlador. Ela permite especificar quais padrões de URL e tipos de requisições (como GET ou POST) um método deve responder. Por exemplo, neste caso, o método home() responderá a requisições GET feitas para a URL raiz.

Quando um usuário acessa example.com/, seu navegador envia uma requisição HTTP GET para o servidor, que chega até a aplicação Spring. O framework Spring encontra o @RequestMapping correspondente no HomeController, chama o método home() para tratar a requisição e, em seguida, envia a resposta apropriada de volta ao navegador do usuário.

Existem anotações que fornecem um mapeamento mais preciso para o tipo de método de requisição, como @GetMapping, @PostMapping, @DeleteMapping, entre outras. Em seus atributos, basta especificar a URL que pode ser utilizada para acessá-las.

Main.java

Main.java

copy

Neste exemplo, se acessarmos a URL /home, seremos direcionados ao método home() APENAS se for uma requisição GET. Se for utilizado um tipo diferente de método de requisição, o servidor responderá com um erro 404 Not Found para essa URL.

@RequestParam

O que são parâmetros de requisição da URL? São os parâmetros que aparecem após o ponto de interrogação na URL. Por exemplo, se temos o endereço -> example.com/home?name=Alex (chave = name, valor = Alex), podemos recuperar diretamente o parâmetro (name) no método welcomeUser().

Main.java

Main.java

copy

Aqui, o parâmetro name é extraído da URL (/home?name=Alex) e passado para o método welcomeUser().

Também é possível extrair mais de um parâmetro, não apenas um único. Todos os parâmetros na URL devem ser separados pelo símbolo &. Por exemplo: example.com/home?name=Alex&age=20.

Main.java

Main.java

copy

Neste exemplo, o endpoint /home pode ser acessado por meio de uma URL como example.com/home?name=Alex&age=20, onde name e age são os parâmetros passados para o método.

@PathVariable

No Spring MVC, a anotação @PathVariable é utilizada para vincular uma variável presente na URL diretamente a um parâmetro de método. Permite capturar valores dinâmicos da URL e utilizá-los dentro do método.

Caso seja necessário definir uma URL de forma dinâmica, ou seja, passar um valor diretamente na própria URL, pode-se utilizar a anotação @PathVariable.

Por exemplo, se houver um padrão de URL como /users/{id}, é possível utilizar @PathVariable para acessar a parte {id} da URL e passá-la como parâmetro para o método.

Main.java

Main.java

copy

Neste exemplo, o id é extraído da URL (/user/123) e passado para o método getUser(), onde o valor 123 é atribuído ao parâmetro userId.

Essas anotações auxiliam os desenvolvedores a configurar facilmente o tratamento de requisições HTTP, vincular dados a objetos e gerenciar respostas, aprimorando a legibilidade e a manutenibilidade do código.

Resumo

O Spring MVC simplifica o desenvolvimento de aplicações web ao separar o tratamento de requisições, a lógica da aplicação e a renderização da visualização. Os controladores, marcados com a anotação @Controller ou @RestController, tratam as requisições e retornam dados para exibição.

1. O que a anotação @Controller faz no Spring MVC?

2. Qual anotação de método é utilizada para lidar com GET requests no Spring MVC?

question mark

O que a anotação @Controller faz no Spring MVC?

Select the correct answer

question mark

Qual anotação de método é utilizada para lidar com GET requests no Spring MVC?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 3
some-alt