O MVC (Model-View-Controller ou Modelo-Visão-Controlador) é um padrão de arquitetura de software muito utilizado, especialmente em desenvolvimento Web.
Seu princípio básico é a separação de responsabilidades da aplicação em três componentes principais:
Model (Modelo)
É a camada de dados e lógica de negócio. Lida com o acesso e a manipulação dos dados (como interagir com o banco de dados) e contém as regras de negócio da aplicação.
View (Visão)
É a camada de interface com o usuário. É responsável pela apresentação visual dos dados, exibindo as informações do Model ao usuário.
Controller (Controlador)
Atua como um intermediário entre o Model e a View. Ele recebe as entradas do usuário (ações na View), processa-as (interage com o Model se necessário) e decide qual View será exibida em resposta.
O uso do MVC promove maior modularidade, facilita a manutenção e o reúso de código, e permite que diferentes desenvolvedores trabalhem em paralelo nas diferentes camadas.
A arquitetura MVC no Spring Boot se baseia no padrão MVC tradicional, mas é grandemente facilitada pelo uso do módulo Spring MVC e pelas convenções e autoconfiguração do Spring Boot.
O Spring MVC é o módulo do Spring Framework responsável por implementar o padrão MVC para aplicações Web. Ele utiliza o conceito de Servlets (em particular, o DispatcherServlet) para gerenciar as requisições HTTP e roteá-las para a camada correta.
O Spring Boot simplifica enormemente o uso do Spring MVC através de:
Dependência spring-boot-starter-web
Ao incluir esta dependência, o Spring Boot automaticamente configura o Spring MVC, o DispatcherServlet, um servidor embarcado (como o Tomcat), e configurações padrão essenciais.
Convenção sobre Configuração
Você não precisa configurar o DispatcherServlet em XML (como se fazia antigamente); o Spring Boot faz isso por você.
Responsabilidade
Receber as requisições HTTP, delegar o processamento ao Model (ou Service Layer) e selecionar a View apropriada.
Implementação
Classes Java anotadas com @Controller (para aplicações que retornam Views, como páginas HTML) ou @RestController (para APIs REST que retornam dados, geralmente JSON ou XML).
Mapeamento
Os métodos dentro do Controller são mapeados para URLs usando anotações como @RequestMapping, @GetMapping, @PostMapping, etc.
Responsabilidade
Representar e manipular os dados e a lógica de negócio.
Implementação
Classes de Entidade (Dados)
Representam as estruturas de dados (e.g., uma classe Usuario).
Camada de Serviço (Service Layer)
Onde a lógica de negócio mais complexa reside. O Controller tipicamente chama métodos de um @Service para realizar operações.
Camada de Repositório (Repository Layer)
Lida com a persistência de dados (e.g., acesso ao banco de dados, usando Spring Data JPA).
View (Visão)
Responsabilidade
Renderizar os dados do Model e apresentá-los ao usuário.
Implementação
Em aplicações web tradicionais, o Spring Boot/MVC usa View Resolvers para localizar arquivos de template (como Thymeleaf, JSP, Handlebars).
No contexto de APIs REST, a View é frequentemente o próprio corpo da resposta HTTP (JSON ou XML) gerado automaticamente.
O usuário acessa uma URL.
O DispatcherServlet (do Spring MVC) recebe a requisição.
Ele identifica e chama o método apropriado no Controller (usando as anotações de mapeamento).
O Controller chama a lógica de negócio na camada Service e/ou Repository (o Model) para obter ou manipular dados.
O Controller adiciona os dados necessários a um objeto Model (do Spring) e retorna o nome da View (e.g., o nome de um template Thymeleaf).
O DispatcherServlet usa o View Resolver para encontrar o template da View e renderizá-lo, preenchendo-o com os dados do Model.
A View (agora HTML) é enviada de volta ao navegador do usuário.
Se você é ou pretende ser DevOps e precisa pesquisar mais profundamente sobre MVC e Spring MVC, segue um guia de estudos de sugestão:
Estes canais possuem vídeos didáticos, desde explicações conceituais até implementações práticas.
Acvesse cada canal e pesquise por vídeos e playlists sobre "MVC" e "Spring MVC".
Pesquisa geral
Canais Recomentados
RocketSeat → https://www.youtube.com/c/RocketSeat
É uma das principais referências em ensino de desenvolvimento no Brasil. Eles explicam o MVC de forma clara, muitas vezes no contexto de Node.js e React, mas o conceito é universal.
Balta.IO → https://www.youtube.com/c/baltaio
André Baltieri (Balta) é excelente para explicar conceitos de arquitetura e .NET. Suas playlists sobre fundamentos quase sempre incluem MVC.
Descompila → https://www.youtube.com/c/Descompila
Foca bastante em Java e conceitos de orientação a objetos. Tem vídeos específicos sobre MVC no contexto do Spring Framework.
Código Fonte TV → https://www.youtube.com/c/codigofontetv
Possui uma abordagem mais geral e conceitual, ótima para quem está começando e quer entender a "ideia" por trás do padrão.
Loiane Groner → https://www.youtube.com/c/loianegroner
Especialista em Angular e Java, Loiane tem cursos completos onde o MVC é abordado de forma prática dentro desses ecossistemas.
Se você prefere ler e aprofundar-se na teoria, existem diversos sites DevOps que abordam o assuntop MVC.
Acesse cada um desses sites e pesquise sobre "MVC" e "Spring MVC".
Alura | Caelum → https://www.alura.com.br/artigos
Procure por "MVC", "Padrão de Arquitetura MVC", "O que é Model View Controller?", "Spring MVC". A Alura tem diversos artigos de altíssima qualidade sobre o tema, além de cursos completos.
DevMedia → https://www.devmedia.com.br
A DevMedia possui um vasto acervo de artigos e cursos. Pesquise por "MVC" para encontrar artigos detalhados, muitas vezes com exemplos de código em Java, .NET e PHP.
Udemy → https://www.udemy.com
Tem muitos cursos sobre programação incluindo Spring Boot, que abordam o assunto MVC em vários idiomas, inclusive português. Você encontra inclusive cursos gratuitos.
Tableless → https://tableless.com.br
O Tableless é focado em boas práticas de desenvolvimento front-end e back-end. Eles têm artigos que explicam o MVC de forma conceitual e também em frameworks específicos.
iMasters → https://imasters.com.br
Portal com conteúdo diversificado. Artigos sobre MVC em diferentes linguagens e frameworks são publicados frequentemente.
Spring MVC → https://spring.io/guides/gs/serving-web-content/
Documentação do Spring (em inglês, mas os conceitos são universais).
Canais como Descompila e Loiane (citados acima) são ótimas fontes em português.
Se você gosta de ter a informação literalmente "nas mãos", muitos livros de programação em português abordam o MVC. Procure por títulos em:
Casa do Código → https://www.casadocodigo.com.br
Livros sobre Spring MVC, ASP.NET MVC, Laravel, etc.
Alta Books → https://altabooks.com.br
Livros como "Use a Cabeça! Padrões de Projetos" abordam o MVC no contexto mais amplo dos padrões de software.
Comece pelo Conceito
Assista a um vídeo do Rocketseat ou Código Fonte TV para entender a teoria.
Veja na Prática
Escolha um canal como Balta.IO ou Descompila para ver o padrão sendo aplicado em código.
Leia para Fixar
Consolide o conhecimento lendo artigos da Alura ou DevMedia.
Consulte a Documentação
Quando for implementar, a documentação oficial do seu framework é sua melhor amiga.
Espero que esta lista seja muito útil para seus estudos! Bons códigos! 😊