Arquitetura do Framework Spring

19
Universidade Federal do Ceará Engenharia de Software – Projeto Detalhado de Software 2014.2

description

Apresentação da disciplina de Projeto Detalhado de Software do curso de Engenharia de Software da UFC. A Apresentação fala sobre a motivação para criação e como é estruturado o framework Spring.

Transcript of Arquitetura do Framework Spring

Page 1: Arquitetura do Framework Spring

Universidade Federal do Ceará

Engenharia de Software – Projeto Detalhado de Software 2014.2

Page 2: Arquitetura do Framework Spring

Motivação

Problemas Essências

Problemas da própria Orientação a Objetos

Auto Acoplamento e como injetar dependências

Problemas Específicos

Problemas da plataforma Java

A Sun “empurrou” os EJBs para os desenvolvedores

Page 3: Arquitetura do Framework Spring

Alto Acoplamento

Como lidar com o alto acoplamento de forma que o objeto cliente não

dependa diretamente da implementação do objeto serviço?

Page 4: Arquitetura do Framework Spring

Inversão de Dependências

Inverta as Dependências e faça com que classes dependam de interfaces

(contratos de métodos).

Page 5: Arquitetura do Framework Spring

Inversão de Dependências

O acoplamento realmente melhorou?

Não! Então como usar a Inversão de Dependências efetivamente?

Page 6: Arquitetura do Framework Spring

IoC/DI Inversão de Controle e

Injeção de Dependências

Delegue a responsabilidade de criação de objetos a outra parte do sistema

Injete as Dependências com um container

Encapsule a responsabilidade de criar objetos em um único local

Page 7: Arquitetura do Framework Spring

Programação Orientada a Aspectos(AOP)

O AOP diminui ainda mais o acoplamento onde a orientação a objetos não

consegue chegar

Existem comportamentos que aparecem por toda a aplicação que não estão

necessariamente relacionados a lógica de negócio

Esses comportamentos podem gerar repetição e são chamados de Aspectos

Após a identificação e isolamento dos Aspectos o AOP precisa interceptar a

execução de métodos em que existe a necessidade de incluir um desses

comportamentos

Page 8: Arquitetura do Framework Spring

Java Enterprise Edition (Java EE)

A Sun criou seu próprio padrão para implementação de lógica de negócios, os

Enterprise Java Beans (EJBs), e “empurrou-os” para os desenvolvedores.

Em meados de 2004 a plataforma Java EE era muito distinta da atual. Os EJBs

tinham problemas :

Não podiam ser executadas fora de um container de aplicação, o que dificultava os

testes - desenvolvimento orientada a testes estava se tornando popular na época

Eram complexos e muitos desenvolvedores subutilizavam de seus recursos

O container EJB é intrusivo, ou seja, os objetos dependem da(s) biblioteca(s) do

container EJB por interfaces ou anotações.

Page 9: Arquitetura do Framework Spring

Surgimento do Spring

Começou a surgir com a publicação do livro Expert One-To-One J2EE Design

and Development de Rod Johnson que criticava os EJBs

O Spring surgiu com o intuito de minimizar os problemas apresentados

(essenciais e específicos) oferecendo um container alternativo ao container

EJB

Spring é resultado de IoC (Inversão de Controle) + DI (Injeção de

Dependências) + AOP (Programação Orientada a Aspectos)

Page 10: Arquitetura do Framework Spring

Vantagens do Spring

O container Spring é não intrusivo

Facilidade para se escrever testes

Container independente de ambiente, não necessita de servidor de aplicação

Facilidade para reuso de código

Page 11: Arquitetura do Framework Spring

Core Container – O núcleo do Spring

As classes básicas estão no módulo Core, onde

estão implementadas as funcionalidades de

reflexão, tratamento de strings etc

Expression Language é responsável pelo

processamento das configurações do Spring, seja

em xml, anotações ou por código

No Beans se encontra o BeanFactory, a primeira

versão do container

Finalmente, no módulo Context está localizada

a implementação mais avançada do container e

recomendada pela Spring Source, a Application

Context

Page 12: Arquitetura do Framework Spring

Conceitos do Spring

Bean : É todo objeto gerenciado pelo container do Spring

Na declaração do Bean é indicada a classe a ser injetada. Existem dois tipos

de injeção: por métodos setter ou por construtor

Exemplo de declaração de bean usando xml :

Page 13: Arquitetura do Framework Spring

Conceitos do Spring

A instanciação de um objeto pode ser complexa e assim necessitar de fábricas

ou builders. No Spring pode-se definir que um bean será instanciado por um

deles.

Além disso há a possibilidade de mapear objetos complexos como listas,

mapas, properties etc

Page 14: Arquitetura do Framework Spring

Usando o Container

Como pegar instâncias dos Beans?

Primeiramente é necessário iniciar o container com as definições de Beans

Depois disso é só “pegar” os Beans

Page 15: Arquitetura do Framework Spring

Componentes do Spring

Basicamente o Spring possui tudo que uma aplicação corporativa precisa, e todos

os seus componentes são baseados no seu container

Page 16: Arquitetura do Framework Spring

Um pouco de Spring MVC

Servlets adicionam muito código repetitivo a aplicação e é necessário lidar

diretamente com objetos de requisição e resposta

Parâmetros de requisição são recebidos como strings e é necessário fazer

várias conversões para montar um objeto de modelo

Não existe um único ponto de entrada para requisições

Modularizar o código se torna difícil

O Spring MVC facilita tudo isso e junto com outros módulos do framework tem

grande poder para aplicações corporativas

Page 17: Arquitetura do Framework Spring

Um pouco de Spring MVC

Depois da criação do container do Spring, a Spring Source percebeu a

oportunidade de criar um framework MVC para aplicações WEB

A base do Spring MVC, como o próprio nome já diz, é o padrão de arquitetura

MVC e uso do padrão Front Controller

O MVC nos permite isolar a camada de negócios (modelo) da de visualização

através de uma cadama intermediária, o Controlador.

O Front Controller intercepta todas as requisições para direcionar ao Controlador

adequado

Controlador no Spring Framework

Page 18: Arquitetura do Framework Spring

Exemplo de Spring MVC

Controlador

View mapeada para pasta WEB-INF/view/helloWorld.html

Page 19: Arquitetura do Framework Spring

Referências Bibliográficas

Professor Camilo Camilo Almendra

[email protected]

Alunos :

Alexsandro Oliveira Alexandrino

[email protected]

Cayk Lima Barreto

[email protected]

Guia oficial Spring:

http://docs.spring.io/spring/docs/4.1.2

.BUILD-SNAPSHOT/spring-framework-

reference/htmlsingle/#overview

FLOWER, Martin, Inversion of Control

Containers and the Dependency

Injection pattern. Disponível em :

http://www.martinfowler.com/articles

/injection.html

Rod Johnson. Expert One-To-One J2EE

Development Without EJB. Wrox

Press,2004.

Lobo, Henrique. Vire o Jogo com Spring

Framework. Casa do Código.