Spring Capitulo 02

6,024 views
5,950 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,024
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
141
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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>

×