SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
Universidade Federal do Ceará 
Engenharia de Software – Projeto Detalhado de Software 2014.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
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?
Inversão de Dependências 
 Inverta as Dependências e faça com que classes dependam de interfaces 
(contratos de métodos).
Inversão de Dependências 
 O acoplamento realmente melhorou? 
 Não! Então como usar a Inversão de Dependências efetivamente?
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
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
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.
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)
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
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
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 :
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
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
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
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
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
Exemplo de Spring MVC 
Controlador 
View mapeada para pasta WEB-INF/view/helloWorld.html
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.

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Introduction to Spring Framework and Spring IoC
Introduction to Spring Framework and Spring IoCIntroduction to Spring Framework and Spring IoC
Introduction to Spring Framework and Spring IoC
 
Spring Web MVC
Spring Web MVCSpring Web MVC
Spring Web MVC
 
Spring boot
Spring bootSpring boot
Spring boot
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
Webdriver.io
Webdriver.io Webdriver.io
Webdriver.io
 
Selenium WebDriver
Selenium WebDriverSelenium WebDriver
Selenium WebDriver
 
ASP.NET MVC Presentation
ASP.NET MVC PresentationASP.NET MVC Presentation
ASP.NET MVC Presentation
 
Automated testing using Selenium & NUnit
Automated testing using Selenium & NUnitAutomated testing using Selenium & NUnit
Automated testing using Selenium & NUnit
 
Spring boot
Spring bootSpring boot
Spring boot
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
QSpiders - Selenium Webdriver
QSpiders - Selenium WebdriverQSpiders - Selenium Webdriver
QSpiders - Selenium Webdriver
 
Maven
MavenMaven
Maven
 
Selenium
SeleniumSelenium
Selenium
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans
 
Webdriver io presentation
Webdriver io presentationWebdriver io presentation
Webdriver io presentation
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
 
Laravel presentation
Laravel presentationLaravel presentation
Laravel presentation
 
Selenium - Introduction
Selenium - IntroductionSelenium - Introduction
Selenium - Introduction
 
Laravel Tutorial PPT
Laravel Tutorial PPTLaravel Tutorial PPT
Laravel Tutorial PPT
 
A guide to getting started with WebdriverIO
A guide to getting started with WebdriverIOA guide to getting started with WebdriverIO
A guide to getting started with WebdriverIO
 

Destaque

Two day-long training on "DSpace" Institutional Repository
Two day-long training on "DSpace" Institutional RepositoryTwo day-long training on "DSpace" Institutional Repository
Two day-long training on "DSpace" Institutional RepositoryNur Ahammad
 
Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Pablo Souza
 
#Aprender3C - Repositorios Digitales con Dspace
#Aprender3C - Repositorios Digitales con Dspace#Aprender3C - Repositorios Digitales con Dspace
#Aprender3C - Repositorios Digitales con DspaceAprender 3C
 

Destaque (6)

Two day-long training on "DSpace" Institutional Repository
Two day-long training on "DSpace" Institutional RepositoryTwo day-long training on "DSpace" Institutional Repository
Two day-long training on "DSpace" Institutional Repository
 
Notação BPMN v. 1.2
Notação BPMN v. 1.2Notação BPMN v. 1.2
Notação BPMN v. 1.2
 
Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?Node.js - Devo adotar na minha empresa?
Node.js - Devo adotar na minha empresa?
 
#Aprender3C - Repositorios Digitales con Dspace
#Aprender3C - Repositorios Digitales con Dspace#Aprender3C - Repositorios Digitales con Dspace
#Aprender3C - Repositorios Digitales con Dspace
 
Documentação de Processos de Negócio
Documentação de Processos de NegócioDocumentação de Processos de Negócio
Documentação de Processos de Negócio
 
Gestão por Processo
Gestão por ProcessoGestão por Processo
Gestão por Processo
 

Semelhante a Arquitetura do Framework Spring

Aumento de Produtividade no Desenvolvimento de Aplicações em Java com Spring ...
Aumento de Produtividade no Desenvolvimento de Aplicações em Java com Spring ...Aumento de Produtividade no Desenvolvimento de Aplicações em Java com Spring ...
Aumento de Produtividade no Desenvolvimento de Aplicações em Java com Spring ...Fernando Godóy
 
Treinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCTreinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCMichael Costa
 
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Getúlio Strapazzon
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesRafael Ponte
 
Curso de Java (Parte 5)
Curso de Java (Parte 5)Curso de Java (Parte 5)
Curso de Java (Parte 5)Mario Sergio
 
CDI -Contextos e Dependências
CDI -Contextos e DependênciasCDI -Contextos e Dependências
CDI -Contextos e DependênciasWende Mendes
 
Introdução ao Asp.NET MVC
Introdução ao Asp.NET MVCIntrodução ao Asp.NET MVC
Introdução ao Asp.NET MVCBenicio Ávila
 
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaAna Albert
 
Jsf – Java Sever Faces
Jsf – Java Sever FacesJsf – Java Sever Faces
Jsf – Java Sever Facesbielgott
 
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)DNAD 2009 - Injeção de Dependência (por Leandro Daniel)
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)Leandro Daniel
 
Parte 1 Introducao
Parte 1 IntroducaoParte 1 Introducao
Parte 1 Introducaoguest7ff4e2
 
React - Biblioteca Javascript para criação de UI
React - Biblioteca Javascript para criação de UIReact - Biblioteca Javascript para criação de UI
React - Biblioteca Javascript para criação de UICleiton Francisco
 

Semelhante a Arquitetura do Framework Spring (20)

Aumento de Produtividade no Desenvolvimento de Aplicações em Java com Spring ...
Aumento de Produtividade no Desenvolvimento de Aplicações em Java com Spring ...Aumento de Produtividade no Desenvolvimento de Aplicações em Java com Spring ...
Aumento de Produtividade no Desenvolvimento de Aplicações em Java com Spring ...
 
1409243945064
14092439450641409243945064
1409243945064
 
Treinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVCTreinamento Básico Sobre ASP.NET MVC
Treinamento Básico Sobre ASP.NET MVC
 
Asp net mvc
Asp net mvcAsp net mvc
Asp net mvc
 
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
Angular5, vue js ou react redux (Trilha de Javascript - TDC 2018 )
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
 
Jsf
JsfJsf
Jsf
 
Curso de Java (Parte 5)
Curso de Java (Parte 5)Curso de Java (Parte 5)
Curso de Java (Parte 5)
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
CDI -Contextos e Dependências
CDI -Contextos e DependênciasCDI -Contextos e Dependências
CDI -Contextos e Dependências
 
J2EE Na Vida Real
J2EE Na Vida RealJ2EE Na Vida Real
J2EE Na Vida Real
 
Conhecendo o Spring
Conhecendo o SpringConhecendo o Spring
Conhecendo o Spring
 
EJB
EJBEJB
EJB
 
Introdução ao Asp.NET MVC
Introdução ao Asp.NET MVCIntrodução ao Asp.NET MVC
Introdução ao Asp.NET MVC
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E JpaDominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
Dominando Jsf E Facelets Utilizando Spring 2.5, Hibernate E Jpa
 
Jsf – Java Sever Faces
Jsf – Java Sever FacesJsf – Java Sever Faces
Jsf – Java Sever Faces
 
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)DNAD 2009 - Injeção de Dependência (por Leandro Daniel)
DNAD 2009 - Injeção de Dependência (por Leandro Daniel)
 
Parte 1 Introducao
Parte 1 IntroducaoParte 1 Introducao
Parte 1 Introducao
 
React - Biblioteca Javascript para criação de UI
React - Biblioteca Javascript para criação de UIReact - Biblioteca Javascript para criação de UI
React - Biblioteca Javascript para criação de UI
 

Arquitetura do Framework Spring

  • 1. Universidade Federal do Ceará Engenharia de Software – Projeto Detalhado de Software 2014.2
  • 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.