O Framework Spring é um dos frameworks Java EE mais populares. Neste artigo, aprenderemos sobre o seguinte:
- arquitetura do framework Spring
- Componentes principais do Spring
- Vários 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 Framework Spring?
O Spring é um dos frameworks mais populares para a edição enterprise do Java. Desenvolvedores de todo o mundo usam o Spring para desenvolver aplicativos 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. Você pode criar diferentes tipos de aplicativos usando o framework Spring.
Conceitos Principais do Spring – DI, IoC, AOP
- É impossível entender o que é o Framework Spring sem entender o que é Injeção de Dependência e Inversão de Controle . 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 estruturais, nos quais, para cada função da aplicação, existe um objeto (serviço) condicionalmente independente que pode ter a necessidade de usar outros objetos (dependências) conhecidos por interfaces. As dependências são transferidas (implementadas) para o serviço no momento de sua criação. Isso é uma situação em que 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 atravessadoras (funcionais) em uma aplicação. Essas funções, que abrangem vários pontos da aplicação, são chamadas de preocupações transversais e essas notas transversais 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 preocupações transversais 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 analisar os módulos do ecossistema Spring um por um.
Componentes Principais do Framework Spring
O contêiner Core do Spring consiste em quatro módulos: SpEL, Contexto, Core, Feijões. A descrição desses elementos é a seguinte:
- O módulo SpEL fornece uma linguagem de expressão poderosa para manipulação de objetos durante a execução.
- O Contexto é construído com base em Feijões e Core e permite acessar qualquer objeto definido nas configurações. O elemento-chave do módulo Contexto é a interface ApplicationContext.
- O módulo Core fornece partes-chave do framework, incluindo propriedades IoC e DI.
- O módulo Feijão é responsável pela criação e gerenciamento de Feijões Spring – é a unidade de estrutura do contexto de 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 fornece funções como download de arquivos, criação de aplicativos da web, serviços da web REST, etc.
- O Web-MVC contém uma implementação do Spring MVC para aplicativos da web.
- O Web-Socket fornece suporte para comunicação entre o cliente e o servidor, usando Web-Sockets em aplicativos da web.
- O Web-Portlet fornece uma implementação do MVC com ambiente de portlet
Spring Framework Acesso a Dados
O contêiner de Acesso a Dados/Integração consiste em JDBC, ORM, OXM, JMS e o módulo de Transações.
- O JDBC fornece uma camada abstrata do JDBC e elimina a necessidade de o desenvolvedor registrar manualmente o código monótono associado à conexão com o banco de dados.
- O Spring ORM fornece integração com ORMs populares como Hibernate, JDO, que são implementações de 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 a programação orientada a aspectos e permite usar todo o arsenal de capacidades AOP.
- O módulo Aspectos oferece integração com o AspectJ, que também é um poderoso framework AOP.
- A Instrumentação é responsável por oferecer suporte à instrumentação de classes e ao carregador de classes, que são usados em aplicações de servidor.
- O módulo de Mensagens fornece suporte ao STOMP.
- Por fim, o módulo de Testes oferece testes usando 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.
- Logging aprimorado 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, JSON Binding API como alternativa ao Jackson e GSON.
- Spring WebFlux – O Spring está ficando reativo.
- Suporte para JUnit 5
- Suporte à programação funcional por meio do 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