Spring MVC: Introdução ao framework

O Spring Framework é um dos frameworks Java mais populares para o desenvolvimento de aplicações, especialmente para a criação de aplicações web. Ele oferece uma vasta gama de recursos que ajudam a simplificar o desenvolvimento, mantendo o código organizado e de fácil manutenção. A estrutura Model-View-Controller (MVC) do Spring é uma das abordagens mais utilizadas para criar aplicações web em Java, fornecendo uma separação clara entre a lógica de negócio, a interface do usuário e o controle da aplicação.

Este tutorial apresenta os conceitos básicos do Spring MVC, explicando como funciona e como criar uma aplicação simples com ele.

1. O Que é o Spring Framework?

O Spring Framework é uma plataforma de código aberto que oferece suporte para desenvolvimento em Java. Ele é amplamente utilizado para criar aplicações empresariais, principalmente por sua facilidade de integração com diferentes tecnologias e sua capacidade de simplificar a injeção de dependências (DI) e o controle de inversão (IoC).

2. Conceitos de MVC no Spring

O Spring MVC é um módulo do Spring Framework que implementa o padrão Model-View-Controller, promovendo uma arquitetura organizada, onde cada componente tem uma função específica:

  • Model: Responsável pela lógica de negócio e manipulação dos dados da aplicação. Ele encapsula o estado da aplicação e define as regras para manipulação dos dados.
  • View: Gerencia a apresentação da aplicação, ou seja, como as informações são exibidas ao usuário final. Em um ambiente web, geralmente envolve tecnologias como HTML, CSS e JavaScript.
  • Controller: Intermediário que gerencia as requisições do usuário e determina qual Model ou View deve ser utilizado para processar e responder a essas requisições.

Exemplo Básico da Estrutura MVC no Spring

A seguir, mostraremos um exemplo simples para ilustrar o funcionamento do Spring MVC.

Passo 1: Configurando o Projeto com Spring Boot

Para simplificar a criação de uma aplicação Spring, usaremos o Spring Boot, uma extensão do Spring Framework que facilita a configuração do projeto, permitindo criar rapidamente uma aplicação pronta para execução.

  1. Acesse o Spring Initializr para gerar um novo projeto.
  2. Configure o projeto selecionando:
    • Projeto: Maven
    • Linguagem: Java
    • Versão: última disponível
    • Dependências: Spring Web (necessária para a criação de aplicações web com Spring MVC)

Após gerar o projeto, faça o download do arquivo compactado e extraia-o em seu ambiente de desenvolvimento.

Passo 2: Criando um Controller

No Spring MVC, um Controller é uma classe Java que responde a solicitações HTTP e controla o fluxo da aplicação. No exemplo abaixo, criaremos um controlador básico que lida com uma requisição GET.

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring MVC!";
    }
}

Neste exemplo:

  • A anotação @RestController indica que essa classe é um controlador REST, ou seja, ela responde diretamente às solicitações HTTP com dados.
  • @GetMapping(“/hello”) mapeia a URL /hello para o método sayHello. Quando a URL é acessada, o método é executado, retornando a resposta “Hello, Spring MVC!”.

Passo 3: Configurando a View

Para renderizar uma resposta em uma página HTML ao invés de texto plano, o Spring MVC pode trabalhar com o Thymeleaf, um mecanismo de template muito usado em aplicações Spring. Abaixo, configuramos uma view para exibir uma mensagem ao usuário.

Crie uma pasta chamada templates dentro do diretório src/main/resources.

Dentro da pasta templates, crie um arquivo HTML chamado greeting.html com o seguinte conteúdo:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Saudação</title>
</head>
<body>
    <h1 th:text="${message}">Hello, Spring MVC!</h1>
</body>
</html>

Atualize o controlador para retornar o nome do template e passar dados para a view

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HelloController {

    @GetMapping("/greeting")
    public String greeting(Model model) {
        model.addAttribute("message", "Bem-vindo ao Spring MVC!");
        return "greeting";
    }
}

Neste exemplo:

  • A anotação @Controller indica que esta classe é um controlador que retorna uma view.
  • Model permite passar dados da lógica de negócio para a view.
  • O método greeting adiciona uma mensagem ao Model e retorna o nome do template, greeting, que o Spring usará para renderizar a resposta.

Passo 4: Executando a Aplicação

Para executar a aplicação, basta rodar o método main da classe principal, que geralmente está no arquivo gerado pelo Spring Initializr. Ao iniciar o servidor, você pode acessar http://localhost:8080/greeting no navegador para ver a página renderizada com a mensagem.

3. Benefícios do Spring MVC

O Spring MVC oferece várias vantagens para o desenvolvimento web em Java:

  • Organização e Manutenção: A separação entre lógica de negócio (Model), controle (Controller) e apresentação (View) torna o código mais fácil de organizar e manter.
  • Flexibilidade: Com o Spring, é possível integrar uma série de outras tecnologias e frameworks, como o Hibernate para persistência de dados e o Spring Security para autenticação e autorização.
  • Injeção de Dependência: O Spring facilita a injeção de dependências, o que permite maior flexibilidade no gerenciamento de componentes e facilita a escrita de testes.

Conclusão

O Spring MVC é uma poderosa ferramenta para desenvolvimento web em Java, com uma arquitetura bem definida que ajuda a manter o código modular e fácil de escalar. Com a ajuda de frameworks como o Spring Boot e o uso de ferramentas de template como o Thymeleaf, você pode criar rapidamente aplicações web robustas e organizadas.

Com o domínio do Spring MVC, é possível criar aplicações web completas, desde APIs REST até sistemas complexos, sempre com uma estrutura bem organizada e separação clara das responsabilidades.