Spring Boot
Spring Boot
Mesmo com os serviços REST, as aplicações continuam a empacotar todas as
funcionalidades em um só lugar, sendo classificadas como aplicações monolíticas. Fazendo
uma analogia de funcionalidade com um brinquedo, a aplicação sempre oferece a mesma
quantidade de brinquedos, independente da demanda. Em um cenários com muitas
crianças que só brincam com bonecas, sobrarão muitos aviões.
Para resolver esse problema, destaca-se um subconjunto da arquitetura SOA
chamado microsserviços (microservices), que abraça a solução REST com o objetivo de
fornecer uma solução separada e independente para um problema.
O Java Spring Boot (ou apenas Spring Boot) é uma ferramenta que facilita e agiliza o
desenvolvimento de aplicações web e de microsserviços com o Spring Framework por meio
de três principais recursos:
1. Autoconfiguração: os aplicativos são inicializados com dependências
predefinidas e não é necessário configurá-las manualmente. Como o Java
Spring Boot é oferecido com recursos integrados de autoconfiguração, ele
configura automaticamente o Spring Framework subjacente e soluções de
terceiros com base em suas definições (e com base nas práticas
recomendadas, o que ajuda a evitar erros).
Vamos utilizar o Spring Initializr para criar nosso primeiro projeto Spring Boot.
Acesse https://start.spring.io/
Dentro da pasta src temos as pastas main e test. Iremos trabalhar na pasta main, a
qual contém outras duas pastas:
● java: que conterá todos os arquivos .java
1. Model (Modelo)
O Model é responsável pela lógica de negócio e pelos dados da aplicação. Ele
representa o estado da aplicação e é a camada que interage com o banco de dados
ou outras fontes de dados. Ele também pode realizar cálculos, validações e outras
operações necessárias para manipular os dados da aplicação. O Model não sabe
nada sobre a interface do usuário ou sobre como os dados são apresentados.
2. View (Visão)
A View é a camada responsável pela apresentação dos dados ao usuário. Ela
mostra a interface gráfica e interage com o usuário, mas não contém lógica de
negócio. A View observa as mudanças no Model e atualiza a exibição para refletir
essas mudanças. Ela está mais focada em como os dados serão apresentados ao
usuário.
No nosso sistema, a View será responsabilidade da pasta resources, pois é nela
que estão os templates e arquivos html estáticos que irão exibir os dados em
formato web. Teremos aqui os formulários para inserir novos dados, bem como os
de consulta e de resultado de consultas.
3. Controller (Controlador)
O Controller atua como intermediário entre o Model e a View. Ele recebe as
entradas do usuário a partir da View (como cliques, teclas pressionadas, etc.) e
decide o que fazer com essas entradas, geralmente manipulando o Model ou
alterando a exibição da View. O Controller pode modificar o Model, o que pode
resultar em uma atualização na View.
No ZAcademico, as classes de Controller conterão as rotas para onde os dados de
inserção, de consulta ou de update vão ser enviados pelos formulários e links e
tratados nas classes modelo.
Benefícios do MVC:
● Separation of Concerns (Separação de Responsabilidades): O padrão
permite separar claramente as responsabilidades de cada parte do sistema, o
que torna o código mais organizado, modular e fácil de manter.
● Facilidade de manutenção: Mudanças na interface do usuário (View)
podem ser feitas sem afetar a lógica de negócios (Model) e vice-versa.
● Testabilidade: A separação facilita a realização de testes unitários, pois as
funcionalidades estão bem divididas em componentes independentes.
● Escalabilidade: Como cada parte da aplicação pode ser alterada
independentemente, o sistema pode ser mais facilmente escalado ou
expandido no futuro.
import org.springframework.jdbc.core.simple.JdbcClient;
Agora acrescente as demais linhas:
@Repository
public class AlunoDAO {
Crie uma na pasta java do projeto uma pasta chamada spring_boot (tem que ser
com esse nome mesmo, e deve ficar no mesmo nível da pasta model. Veja imagem
a seguir).
Dentro da pasta spring_boot crie uma classe chamada AlunoController.
@Controller
public class AlunoController {
…..
Para o Controller enxergar o Model iremos chamar para essa classe uma classe de
modelo. No caso, chamaremos a classe AlunoDAO, pois queremos que os dados
sejam manipulados em banco de dados.
@Controller
public class AlunoController {
private final AlunoDAO alunoDAO;
public AlunoController(AlunoDAO alunoDAO){
this.alunoDAO = alunoDAO;
}
@RequestMapping(value="/cadaluno",method=RequestMethod.POST)
@PostMapping(value="/cadaluno")
O retorno de cadastraAluno será uma String que conterá o nome do arquivo html
que receberá a resposta. Digamos que o arquivo de resposta se chamará
resultCadAluno.html, então o retorno do método será
return "resultCadAluno";
O método completo ficaria como segue
@RequestMapping(value="/cadaluno", method=RequestMethod.POST)
public String cadastraAluno(@ModelAttribute Aluno aluno, Model
model) {
alunoDAO.create(aluno);
model.addAttribute("aluno", aluno);
return "resultCadAluno";
}