O Spring Framework é um dos frameworks Java EE mais populares. Neste artigo, vamos aprender sobre o seguinte:
- Arquitetura do framework Spring
- Componentes principais do Spring
- Diversos projetos sob o guarda-chuva do framework Spring.
I looked at the Google Trends chart for Spring Framework, Servlet, JSP, and JSF. It’s clear that Spring is far ahead from all other Java EE technologies.

O que é o Spring Framework?
O Spring é um dos frameworks mais populares para a edição enterprise do Java. Desenvolvedores do mundo todo utilizam o Spring para desenvolver aplicações confiáveis e de alta qualidade. O framework Spring foi projetado por Rod Johnson. Desde então, o Spring se tornou uma tecnologia alternativa no mundo Java para o modelo EJB. É possível criar diferentes tipos de aplicações usando o framework Spring.
Conceitos Principais do Spring – DI, IoC, AOP
- É impossível entender o que é o Spring Framework sem compreender o que é a Injeção de Dependência e a Inversão de Controle. A Injeção de Dependência, também chamada de DI, é um dos tipos de Inversão de Controle (IoC).
- Inversão de Controle – este é o princípio da programação orientada a objetos, no qual os objetos do programa não dependem de implementações concretas de outros objetos, mas podem ter conhecimento de suas abstrações (interfaces) para interação posterior.
- Injeção de Dependência – é uma composição de padrões de design estrutural, no qual para cada função da aplicação existe um objeto condicionalmente independente (serviço) que pode precisar usar outros objetos (dependências) conhecidos por ele por meio de interfaces. As dependências são transferidas (implementadas) para o serviço no momento de sua criação. Esta é uma situação onde introduzimos um elemento de uma classe em outra. Na prática, a DI é implementada passando parâmetros para o construtor ou usando setters. Bibliotecas que implementam essa abordagem também são chamadas de contêineres IoC.
- Programação Orientada a Aspectos – um paradigma de programação que permite distinguir funcionalidades de corte transversal (funcionais) na aplicação. Essas funções, que atravessam vários nós da aplicação, são chamadas de preocupações de corte transversal e essas notas de corte transversal são separadas da lógica de negócios imediata da aplicação. Na OOP, a unidade-chave é a classe, enquanto na AOP, o elemento-chave é o aspecto. A DI ajuda a separar as classes da aplicação em módulos separados, e a AOP ajuda a separar as preocupações de corte transversal dos objetos que elas afetam.
Arquitetura do Framework Spring
O Framework Spring é dividido em vários módulos separados, o que permite que você decida quais usar em sua aplicação. A imagem abaixo ilustra os módulos mais importantes da arquitetura do Framework Spring. Vamos examinar os módulos do ecossistema Spring um por um.
Componentes Principais do Framework Spring
O contêiner principal do Spring consiste em quatro módulos: SpEL, Context, Core, Beans. A descrição desses elementos é a seguinte:
- O módulo SpEL fornece uma linguagem de expressão poderosa para manipular objetos durante a execução.
- O Context é construído com base nos módulos Beans e Core e permite que você acesse qualquer objeto definido nas configurações. O elemento chave do módulo Context é a interface ApplicationContext.
- O módulo Core fornece partes fundamentais do framework, incluindo propriedades IoC e DI.
- O módulo Bean é responsável por criar e gerenciar Spring Beans – a unidade estrutural do contexto da aplicação.
Spring Framework Web
A camada Web do Spring Framework consiste em Web, Web-MVC, Web-Socket, Web-Portlet etc.
- O módulo Web oferece funções como baixar arquivos, criar aplicação web, serviço web rest etc.
- Web-MVC contém uma implementação Spring MVC para aplicações web.
- Web-Socket fornece suporte para comunicação entre o cliente e o servidor, usando Web-Sockets em aplicações web.
- Web-Portlet fornece implementação MVC com ambiente portlet
Acesso a Dados do Spring Framework
O container de Acesso/Integração de Dados consiste em JDBC, ORM, OXM, JMS e o módulo de Transações.
- JDBC fornece uma camada abstrata de JDBC e elimina a necessidade do desenvolvedor registrar manualmente o código monótono associado à conexão com o banco de dados.
- Spring ORM fornece integração com ORMs populares como Hibernate, JDO, que são implementações da JPA.
- O módulo OXM é responsável por vincular o Objeto / XML – XMLBeans, JAXB, etc.
- O módulo JMS (Java Messaging Service) é responsável por criar, enviar e receber mensagens.
- Transações oferece suporte à gestão de transações para classes que implementam determinados métodos e POJOs.
Módulos Diversos
O Spring também inclui vários outros módulos importantes, como AOP, Aspectos, Instrumentação, Mensagens e Testes.
- O AOP implementa programação orientada a aspectos e permite o uso de todo o arsenal de capacidades AOP.
- O módulo de Aspectos fornece integração com o AspectJ, que também é um poderoso framework AOP.
- A Instrumentação é responsável por dar suporte à instrumentação de classe e ao carregador de classes, que são usados em aplicações de servidor.
- O módulo de Mensagens oferece suporte ao STOMP.
- Por fim, o módulo de Testes fornece testes usando o TestNG ou o Framework JUnit.
Recursos do Spring 5
O Spring 5 trouxe uma atualização massiva para o Spring 4. Alguns dos recursos importantes do Spring 5 são:
- Suporte para Java 8, Java 9, Java EE 7, Java EE 8, Servlet 4.0, Bean Validation 2.0 e JPA 2.2. Fico feliz em ver que o Spring está tentando acompanhar as versões mais recentes das principais tecnologias em uso.
- Melhoria no registro com o novo módulo – spring-jcl.
- As operações de arquivo estão utilizando fluxos NIO 2, melhorando assim o desempenho.
- Suporte para Reactor 3.1 Flux e Mono, assim como RxJava 1.3 e 2.1 como valores de retorno dos métodos do controlador Spring MVC.
- Suporte para Kotlin, Project Lombok, API de ligação JSON como alternativa a Jackson e GSON.
- Spring WebFlux – Spring adotando uma abordagem reativa.
- Suporte para JUnit 5
- Suporte à programação funcional por meio de Kotlin.
Você pode conferir os Projetos Spring em nosso Repositório no GitHub.
Referências: Site Oficial do Spring, Documentação de Referência do Spring.
Source:
https://www.digitalocean.com/community/tutorials/spring-framework