Framework Spring

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.

Spring Framework – Google Trends

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:

  1. O módulo SpEL fornece uma linguagem de expressão poderosa para manipulação de objetos durante a execução.
  2. 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.
  3. O módulo Core fornece partes-chave do framework, incluindo propriedades IoC e DI.
  4. 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.

  1. O módulo Web fornece funções como download de arquivos, criação de aplicativos da web, serviços da web REST, etc.
  2. O Web-MVC contém uma implementação do Spring MVC para aplicativos da web.
  3. O Web-Socket fornece suporte para comunicação entre o cliente e o servidor, usando Web-Sockets em aplicativos da web.
  4. 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.

  1. 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.
  2. O Spring ORM fornece integração com ORMs populares como Hibernate, JDO, que são implementações de JPA.
  3. O módulo OXM é responsável por vincular o Objeto/XML – XMLBeans, JAXB, etc.
  4. O módulo JMS (Java Messaging Service) é responsável por criar, enviar e receber mensagens.
  5. 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.

  1. O AOP implementa a programação orientada a aspectos e permite usar todo o arsenal de capacidades AOP.
  2. O módulo Aspectos oferece integração com o AspectJ, que também é um poderoso framework AOP.
  3. 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.
  4. O módulo de Mensagens fornece suporte ao STOMP.
  5. 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:

  1. 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.
  2. Logging aprimorado com o novo módulo – spring-jcl.
  3. As operações de arquivo estão utilizando fluxos NIO 2, melhorando assim o desempenho.
  4. 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.
  5. Suporte para Kotlin, Project Lombok, JSON Binding API como alternativa ao Jackson e GSON.
  6. Spring WebFlux – O Spring está ficando reativo.
  7. Suporte para JUnit 5
  8. 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