Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Spring Capitulo 02

6,167 views

Published on

  • Be the first to comment

Spring Capitulo 02

  1. 3. <ul><li>Conhecer o conceito de IoC </li></ul><ul><li>Saber utilizar: Lazy-initialization e Singletons </li></ul><ul><li>Conhecer os escopos dos beans </li></ul><ul><li>Saber registrar beans no container do Spring </li></ul><ul><li>Saber realizar injeções de setters e constructors. </li></ul>
  2. 4. <ul><li>Saber fazer Injeções de Coleções </li></ul><ul><li>Saber fazer Injeção entre beans colaboradores </li></ul><ul><li>Saber instanciar o contexto do Spring </li></ul>
  3. 5. <ul><ul><li>Como “amarrar” as camadas? </li></ul></ul><ul><ul><li>Acoplamento? </li></ul></ul><ul><ul><li>Injeção: Setter e Constructor </li></ul></ul><ul><ul><li>Serviço: </li></ul></ul><ul><ul><ul><li>Componente </li></ul></ul></ul><ul><ul><ul><li>Reutilizável </li></ul></ul></ul><ul><ul><ul><li>Extensível </li></ul></ul></ul>
  4. 6. <ul><li>Principais vantagens: </li></ul><ul><ul><li>Desacoplamento </li></ul></ul><ul><ul><li>Visão fácil das dependências </li></ul></ul><ul><ul><li>Facilidade para testes </li></ul></ul><ul><ul><li>Aplicações para terceiros (fora de nosso controle). EX: Contador de linhas PDF. </li></ul></ul>Contador PDF
  5. 7. <? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?> < beans xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; > < bean id = &quot;autor&quot; class = &quot;com.targettrust.spring.bad.ok.Autor&quot; /> </ beans > package com.targettrust.spring.bad; import java.util.List; public class Autor { private String nome ; private List<Livro> livros ; // Setters }
  6. 8. <ul><li>Carregamento tardio </li></ul><ul><li>Aumento de performance </li></ul><ul><li>Não desperdiça recursos </li></ul><ul><li>lazy-init=“true” </li></ul><ul><li>Sempre recomendado </li></ul>
  7. 9. <ul><li>Design Pattern GoF </li></ul><ul><li>Default </li></ul><ul><li>scope=“Singleton” </li></ul><ul><li>Performace </li></ul><ul><li>Cuidado: dirty fields </li></ul>
  8. 10. <ul><li>* contexto web-aware criados por XmlWebApplicationContext. </li></ul>Scopo Descrição singleton Uma única instância de objeto para todo o contexto do Spring. prototype Múltiplas instâncias de um objeto para o container do Spring. request * Escopo relacionado ao ciclo de vida HTTP Request, a cada request teremos outra instância de bean no Spring session * Escopo relacionado ao ciclo de vida HTTP Session, uma única instância do Bean por session. global session * Escopo relacionado ao cliclo de vida global HTTP Session, bean válido em uma session global. Utilizado para portlets.
  9. 11. <ul><li>Propriedade </li></ul><ul><li>Regras de getters/setters, camelCase </li></ul><ul><li>Setter público </li></ul><ul><li>Injeção XML </li></ul>
  10. 12. package com.targettrust.spring.setter; public class Aluno { private String nome ; public String getNome() { return nome ; } public void setNome(String nome) { this . nome = nome; } } <? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?> < beans xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; default-lazy-init = &quot;true&quot; > < bean id = &quot;aluno&quot; class = &quot;com.targettrust.spring.setter.Aluno&quot; > < property name = &quot;nome&quot; value = &quot;Diego&quot; /> </ bean > </ beans >
  11. 13. <ul><li>Construtor </li></ul><ul><li>Índice ,Tipo ou ordem natural </li></ul><ul><li>Construtor público </li></ul><ul><li>Injeção XML </li></ul>
  12. 14. package com.targettrust.spring.constructor; public class Pessoa { private String nome ; private Integer idade ; private boolean cartaMorotista ; public Pessoa(String nome, Integer idade, boolean cartaMorotista) { super (); this . nome = nome; this . idade = idade; this . cartaMorotista = cartaMorotista; } } <? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?> < beans xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; > < bean id = &quot;pessoa&quot; class = &quot;com.targettrust.spring.constructor.Pessoa&quot; > < constructor-arg value = &quot;Diego Pacheco&quot; /> < constructor-arg value = &quot;22&quot; /> < constructor-arg value = &quot;false&quot; /> </ bean > </ beans >
  13. 15. <ul><li>Tags: </list>, </set>, </map>, </set>,</props> ou value(properties) </li></ul><ul><li>Todo tipo de coleção via Properties Editor </li></ul><ul><li>Injeção via Setter ou Construtor </li></ul><ul><li>Injeção XML </li></ul>
  14. 18. <ul><li>Injeção de Pojos </li></ul><ul><li>2 ou mais beans </li></ul><ul><li>Auto-injeção </li></ul><ul><li>Injeção via Setter ou Constructor </li></ul><ul><li>EJB 3.0 não tem esse recurso !!! </li></ul>
  15. 19. package com.targettrust.spring.colaboradores; public class Cidade { private String nome ; public Cidade() {} public String getNome() { return nome ; } public void setNome(String nome) { this . nome = nome; } } package com.targettrust.spring.colaboradores; import java.util.List; public class Estado { private String sigla ; private List<Cidade> cidades ; public Estado() {} public String getSigla() { return sigla ; } public void setSigla(String sigla) { this . sigla = sigla; } public List<Cidade> getCidades() { return cidades ; } public void setCidades(List<Cidade> cidades) { this . cidades = cidades; } }
  16. 20. <? xml version = &quot;1.0&quot; encoding = &quot;UTF-8&quot; ?> < beans xmlns = &quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation = &quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd&quot; > < bean id = &quot;cidA&quot; class = &quot;com.targettrust.spring.colaboradores.Cidade&quot; > < property name = &quot;nome&quot; >< value > PortoAlegre </ value ></ property > </ bean > < bean id = &quot;cidB&quot; class = &quot;com.targettrust.spring.colaboradores.Cidade&quot; > < property name = &quot;nome&quot; >< value > Gravata í </ value ></ property > </ bean > < bean id = &quot;estado&quot; class = &quot;com.targettrust.spring.colaboradores.Estado&quot; > < property name = &quot;sigla&quot; value = &quot;RS&quot; /> < property name = &quot;cidades&quot; > < list > < ref bean = &quot;cidA&quot; /> < ref local = &quot;cidB&quot; /> < bean class = &quot;com.targettrust.spring.colaboradores.Cidade&quot; > < property name = &quot;nome&quot; value = &quot;Canoas&quot; /> </ bean > </ list > </ property > </ bean > </ beans >
  17. 21. package com.targettrust.spring.colaboradores; import org.springframework.beans.factory.BeanFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestColaboradores { public static void main(String[] args) { BeanFactory bf = new ClassPathXmlApplicationContext( &quot;/com/targettrust/spring/&quot; + &quot;colaboradores/Spring-beans.xml&quot; ); } }
  18. 22. <ul><li>Faça a injeção de um objeto Cliente em um Objeto Vendedor. </li></ul><ul><li>Faça a injeção de uma Lista de Alunos em um Objeto Turma. </li></ul><ul><li>Faça a injeção de um Mapa de UF com uma Lista de Cidades. </li></ul><ul><li>Faça a injeção de um UF em um objeto País através de constructor injection. </li></ul><ul><li>Faça um Serviço de Calculadora e injete funções matemáticas nesse bean. </li></ul>

×