Introdução ao Spring Framework
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Introdução ao Spring Framework

  • 6,965 views
Uploaded on

Apresentação criada com intuíto de servir como base para o estudo do framework Spring.

Apresentação criada com intuíto de servir como base para o estudo do framework Spring.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,965
On Slideshare
6,854
From Embeds
111
Number of Embeds
5

Actions

Shares
Downloads
185
Comments
0
Likes
3

Embeds 111

http://thecodingoflife.blogspot.com.br 65
http://www.natanaelfonseca.com.br 35
http://thecodingoflife.blogspot.com 9
http://6906320108469679693_9789ecd219b4070785e61ee3379ce7196ce0d730.blogspot.com 1
http://www.linkedin.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. Introdução ao Spring FrameworkNatanael FonsecaArquiteto de Software
  • 2. Ementa• O que é o Spring Framework ?• O que são POJOS ?• Inversão de Controle;• Injeção de dependência;• Módulos do Spring;• Cenários de uso com Spring;• Configurando o projeto;
  • 3. O que é ?• Fornece uma infra-estrutura completa de componentes que se integram facilmente com sua aplicação, deixando você livre para programar apenas suas regras de negócio.• No seu core, existe um container de Ioc.
  • 4. POJOS• Acrônimo para “Plain Old Java Object”;• Termo estabelecido por Martin Fowler, Rebecca Parsons e John Mackenzie em 2005;• Denota o desenvolvimento da lógica de negócio em Objetos Java definidos a partir de classes ordinárias sem o uso especifico de um modelo de componentização, em especial sem o uso de EJBs.• Portanto, o Spring sugere o uso de “JavaBeans” para a definição dos objetos da aplicação, criando um modelo de componentes simples e sem o uso de EJBs;
  • 5. Inversão de Controle• Normalmente o “controle” sobre o software em execução fica a cargo do próprio programador, contudo, quando em alguns trechos o controle é passado para outro componente(Container), dizemos que houve uma inversão de controle(Inversão de responsabilidades).
  • 6. Injeção de dependência• A injeção de dependência é um design pattern que visa desacoplar os componentes da aplicação.• Os componentes são instanciados externamente a classe.• Um gerenciador controla essas instancias.• Os componentes tem dependências entre si.• Esse gerenciador, através de uma configuração, liga os componentes de forma a montar a aplicação.
  • 7. Módulos do Spring
  • 8. Cenários de Uso• Dando suporte completo a uma aplicação JEE(Transação, Acesso a dados, Serviços e etc.);• Se integrando a algum framework Web, tal como: Struts, JSF e etc. Para acesso a infra- estrutura do Spring;• Servindo como ponte para a conexão entre diversas aplicações.Via Web Services, por exemplo;
  • 9. Configurando o Projeto• Basta baixar os “Jars” do spring, disponíveis em: • http://www.springsource.org/spring-community-download• Ou se você estiver usando um Gerenciador de dependência, como o Maven, basta consultar: • http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/ overview.html#d0e6
  • 10. ExemploImagine o cenário ao lado. Semo uso de Spring, teríamos umcódigo semelhante a este:ComponenteC componenteC = new ComponenteC(); Servico servico = new Servico();ComponenteB componenteB = new ComponenteB();componenteB.setServico( servico ); ComponentA componentA = new ComponentA();componentA.setComponenteB( componenteB );componentA.setComponenteC( componenteC ); /* O que acontece acima é a injeção manual pelo próprio programadordas instancias que os respectivos componentes dependem via método set. */
  • 11. Exemplo Com spring, basta declarar os beans e fazer uso da injeção de dependência fornecida pelo mesmo.<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="compA" class="com.blogspot.training.spring.ComponenteA"> <property name="componenteB" ref="compB"/> <property name="componenteC" ref="compC"/> </bean> <bean id="compB" class="com.blogspot.training.spring.ComponenteB"> <property name="servico" ref="servico"/> </bean> <bean id="compC" class="com.blogspot.training.spring.ComponenteC"/> <bean id="servico" class="com.blogspot.training.spring.Servico"/> </beans>
  • 12. ExemploComo resultado final, temos a “Inversão de controle”de criação das instancias que agora são gerenciadaspelo Spring, ou seja, basta solicitarmos o componenteAque o mesmo já vem com todas as suas dependênciaspreenchidas.public static void main(String[] args) { Resource resource = new ClassPathResource("applicationContext.xml"); BeanFactory factory = new XmlBeanFactory( resource ); ComponenteA componentA = (ComponenteA) factory.getBean( "compA" ); System.out.println( componentA ); System.out.println( componentA.getComponenteB() ); System.out.println( componentA.getComponenteB().getServico() ); }
  • 13. BeanFactory• Fábrica de Objetos responsável por realizar a inversão de controle (Ioc) na injeção de dependências dos objetos instanciados e solicitados por uma aplicação.• Substitui o operador “new” da linguagem java, deixando a cargo do Spring controlar a criação das instancias.
  • 14. BeanFactory• Possui diversos métodos para obter uma instancia de determinado objeto;• Pode-se usar o “id” lógico fornecido no XML ou ainda o tipo da classe .class;• Um implementação simples é a classe XMLBeanFactory que utiliza um arquivo XML para a definição dos beans;
  • 15. Interface Resource• Interface que abstrai a origem do arquivo XML, esta possui diversas implementações, por exemplo: • ClassPathResource • ServletContainerResource • URLResource • FileSystemResource • InputStreamResource • PortletResource
  • 16. Beans SingletonPor padrão, todos os beans são “Singleton”, mas casoqueira explicitar, basta colocar “Scope=Singleton”,conforme exemplo abaixo:<bean id="compC" class="com.blogspot.training.spring.ComponenteC" scope="singleton" />Fazendo isso, ao se tentar obter 5 instancias decompC, obteremos sempre as mesmas :for (int i = 0; i < 5; i++) { ComponenteC componentC = (ComponenteC) factory.getBean("compC"); System.out.println(componentC);}Resultado no console:com.blogspot.training.spring.ComponenteC@679bfb30com.blogspot.training.spring.ComponenteC@679bfb30com.blogspot.training.spring.ComponenteC@679bfb30com.blogspot.training.spring.ComponenteC@679bfb30com.blogspot.training.spring.ComponenteC@679bfb30
  • 17. Beans PrototypeCaso queira que o spring retorne sempre instanciasnovas, basta alterar o atributo scope para“prototype”.<bean id="compC" class="com.blogspot.training.spring.ComponenteC" scope="prototype" />Fazendo isso, ao se tentar obter 5 instancias decompC, obteremos instancias diferentes :for (int i = 0; i < 5; i++) { ComponenteC componentC = (ComponenteC) factory.getBean("compC"); System.out.println(componentC);}Resultado no console:com.blogspot.training.spring.ComponenteC@5097ededcom.blogspot.training.spring.ComponenteC@26858bf1com.blogspot.training.spring.ComponenteC@9a68ef9com.blogspot.training.spring.ComponenteC@15f48262com.blogspot.training.spring.ComponenteC@679bfb30
  • 18. ApplicationContext• Estende BeanFactory adicionando novas funcionalidades e provendo características JEE como, por exemplo: • Suporte a AOP; • Internacionalização; • Propagação de Eventos; • Dentre outras;
  • 19. ApplicationContext• Existem diversas implementações de ApplicationContext. Em suma, podemos utilizar ClasspathXMLApplicationContext para indicar que iremos ler o XML do classpath da aplicação. public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); ComponenteA compA = (ComponenteA) ctx.getBean("compA"); System.out.println( compA ); }
  • 20. Referencias• Spring Framework Reference • http://static.springsource.org/spring/docs/3.1.x/spring-framework- reference/html/• Spring in Action, Terceira Edição de Craig Walls.