Aprendendo Spring Framework

O que é Spring Core IoC, como funciona e qual sua importância dentro do Spring Framework? Saiba mais sobre a estrutura do framework em um breve resumo sobre as responsabilidades de cada módulo.

A estrutura do Spring framework está dividida em 20 módulos, onde esses módulos estão divididos em 7 grupos, são eles: Core Container, Data Access/Integration, Web, Aspect Oriented Programming (AOP), Instrumentation e Test. Todos os módulos, com exceção do módulo de testes, são montados sobre o Core Container, como pode ser visto na imagem abaixo (Docs Spring):

spring-overview

Core Container

 

• Os módulos Core e Bean proveem as partes fundamentais do framework, incluindo o princípio de IoC (Inversion of Control), mais conhecido como injeção de dependências.

• O módulo Bean provê a BeanFactory, que é um implementação sofisticada do padrão Factory. Essa implementação desacopla a configuração e a especificação das dependências a partir da lógica do software.

• O módulo Context baseia-se nos módulos Core e Beans. É um meio para acessar qualquer objeto definido e configurado. Este módulo estende do Bean Factory e adiciona suporte aos eventos no ciclo de vida da aplicação e validação. Outro ponto interessante é o suporte a funcionalidade do Jakarta EE (antigo JavaEE) como acesso ao JNDI, integração com EJB e também atua como facilitador para integração do Spring com outros frameworks.

• O módulo SpEL fornece uma linguagem de expressão poderosa para consultar e manipular objetos durante o tempo de execução.

 

Data Access / Integration Modules

 

JDBC (Java DataBase Connectivity) fornece uma camada de abstração, reponsável pelo envio de instruções SQL para ao banco de dados.

ORM (Object-Relational Mapping) provê a integração com APIs de mapeamento de objetos-relacionais, como, JPA, JDO, Hibernate, etc..

OXM (Object/XML Mapping) fornece suporte via camada de abstração a implementação de Objetos mapeados via XML.

JMS  (Java Messaging Service) dá suporte a produção e consumo de mensagem sejam elas síncrona ou assíncronas.

Transactions provê suporte a  gerenciamento de classes de transação.

 

Web Modules

 

  • Web provê recursos de integração básico orientados para a web, como inicialização do container IoC usando listeners de Servlets e contexto para aplicação web.
  • Sockets fornece suporte para comunicação bidirecional baseada em WebSocket entre o cliente e o servidor.
  • Portlet provê a implementação do MVC a ser usada em um ambiente de portlet e espelha a funcionalidade do módulo do Servlet.
  • Servlet contém a implementação do MVC (Model-View-Controller) e do Web Services REST do Spring.

 

AOP e Instrumentation

 

  • AOP  fornece uma implementação de programação orientada a aspectos, permitindo separar as preocupações transversais da lógica de negócios.
  • Aspects é um módulo separado que fornece integração com AspectJ.
  • Instrumentation fornece o suporte de instrumentação de classe e implementações do classloader

 

Messaging

Provê o suporte para aplicações baseadas em mensagens instantâneas, e inclui um conjunto de anotações para mapear mensagens para métodos, semelhante ao modelo de programação baseado em anotações do Spring MVC.

 

Test

O módulo de teste dá suporte aos teste de unitários e de integração utilizando JUnit ou TestNG. Ele fornece carregamento consistente de Spring ApplicationContexts e armazenamento em cache desses contextos. Bem como, fornece  mock objects para facilitar e isolar os testes unitários.

 

Nesse primeiro post, podemos ver que o Spring Framework tem uma arquitetura dividida em módulos, onde cada módulo tem responsabilidades bem definidas e seguindo os padrões de modelagem de softwares baseados no Domain-Driven Design (DDD). Essa divisão facilita a criação e integração de aplicações com o framework, tornando-o poderoso e flexível, características que fazem o Spring ter uma grande aceitação e adoção por desenvolvedores e empresas no mundo inteiro.

Nos próximos posts, iremos nos aprofundar no módulo Spring Core. Para criação desse post, utilizei como referência a documentação oficial do Spring disponível aqui.

Por HIVISON MOURA

Bacharel em análise de sistemas pela UnP. Trabalha na Matera, membro e organizador da comunidade SouJava Campinas desde 2016. Entusiasta em novas tecnologias.

Postado em: 09 de abril de 2018

Confira outros artigos do nosso blog

Balanceamento de carga em microsserviços com Spring Cloud Netflix

13 de julho de 2018

Jamila Peripolli Souza

Quais os benefícios da arquitetura REST?

26 de junho de 2018

Henrique Lacerda

Desenvolvendo microsserviços com Spring Cloud Netflix

22 de junho de 2018

Jamila Peripolli Souza

Copa do Mundo: Integrando planilha Google com uma aplicação Firebase

19 de junho de 2018

Flavia Domingues

Deixe seu comentário