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.
2. 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
3. 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?
4. Inversão de Dependências
Inverta as Dependências e faça com que classes dependam de interfaces
(contratos de métodos).
5. Inversão de Dependências
O acoplamento realmente melhorou?
Não! Então como usar a Inversão de Dependências efetivamente?
6. 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
7. 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
8. 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.
9. 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)
10. 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
11. 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
12. 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 :
13. 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
14. 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
15. 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
16. 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
17. 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
18. Exemplo de Spring MVC
Controlador
View mapeada para pasta WEB-INF/view/helloWorld.html
19. Referências Bibliográficas
Professor Camilo Camilo Almendra
camilo@es.ufc.br
Alunos :
Alexsandro Oliveira Alexandrino
sandrooliveira1501@gmail.com
Cayk Lima Barreto
cayk-lima@hotmail.com
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.