Darlan Florêncio de Arruda<br />Universidade de Pernambuco - UPE<br />
Introdução<br /><ul><li>Dimensão do Java
A maioria das aplicações são corporativas
Interfaces web
Persitencias em banco de dados relacionais
Comunicação com outros sistemas
Necessidade de autenticação e autorização de usuários</li></ul>Workshop Spring Framework<br />
Introdução<br /><ul><li>A Java ComunityProcess (JCP) criou o Java 2 Enterprise Edition (J2EE)
J2EE foi criada visando aplicações de grande porte
J2EE torna-se complexo para pequenas aplicações </li></ul>Workshop Spring Framework<br />
Introdução<br /><ul><li>Pequenos grupos de desenvolvedores criaram soluções simples
Rod Johson criou o Spring Framework
Soluciona as complexidades do Enterprise Java Beans (EJB) parte principal do J2EE.   </li></ul>Workshop Spring Framework<b...
O que é o Spring?<br />O Spring é um Framework Open source não intrusivo, baseado nos padrões de projeto Inversão de contr...
Histórico<br /><ul><li>Primeira versão foi escrita por Rod Johnson e publicada em Outubro de 2002 no livro "ExpertOne-on-O...
Foi lançado sob a licença Apache 2.0 em junho de 2003
A liberação da primeira etapa ocorreu em março de 2004;
O Spring 1.2.6 ganhou um prêmio Jolt produtividade e uma JAX InnovationAward em 2006.
A versão na qual está atualmente o Spring é 3.0.1</li></ul>Workshop Spring Framework<br />
Características do Spring<br /> Estrutura <br />  do <br /> Spring<br />Workshop Spring Framework<br />
Inversão de Controle<br />Container de Inversão de Controle (IoC)<br />    É o nome padrão dado ao desenvolvimento de prog...
 Injeção de Dependência
 Linguagens de Programação Funcional</li></ul>Workshop Spring Framework<br />
Injeção de Dependência?<br />O que é Dependência ?<br /><ul><li>É quando se prende um componente a outro por:
Herança
Composição
Instanciação
Instanciação por factory
Parâmetro de método
Uso de métodos ou atributos estáticos</li></ul>Workshop Spring Framework<br />
O que é Injeção de Dependência?<br /><ul><li>É uma forma de Inversão de Controle
Upcoming SlideShare
Loading in …5
×

Workshop Spring Framework

1,373 views

Published on

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

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

No notes for slide

Workshop Spring Framework

  1. 1. Darlan Florêncio de Arruda<br />Universidade de Pernambuco - UPE<br />
  2. 2. Introdução<br /><ul><li>Dimensão do Java
  3. 3. A maioria das aplicações são corporativas
  4. 4. Interfaces web
  5. 5. Persitencias em banco de dados relacionais
  6. 6. Comunicação com outros sistemas
  7. 7. Necessidade de autenticação e autorização de usuários</li></ul>Workshop Spring Framework<br />
  8. 8. Introdução<br /><ul><li>A Java ComunityProcess (JCP) criou o Java 2 Enterprise Edition (J2EE)
  9. 9. J2EE foi criada visando aplicações de grande porte
  10. 10. J2EE torna-se complexo para pequenas aplicações </li></ul>Workshop Spring Framework<br />
  11. 11. Introdução<br /><ul><li>Pequenos grupos de desenvolvedores criaram soluções simples
  12. 12. Rod Johson criou o Spring Framework
  13. 13. Soluciona as complexidades do Enterprise Java Beans (EJB) parte principal do J2EE. </li></ul>Workshop Spring Framework<br />
  14. 14. O que é o Spring?<br />O Spring é um Framework Open source não intrusivo, baseado nos padrões de projeto Inversão de controle (IoC) e Injeção de Dependência. <br />Workshop Spring Framework<br />
  15. 15. Histórico<br /><ul><li>Primeira versão foi escrita por Rod Johnson e publicada em Outubro de 2002 no livro "ExpertOne-on-One J2EE Design e Desenvolvimento.";
  16. 16. Foi lançado sob a licença Apache 2.0 em junho de 2003
  17. 17. A liberação da primeira etapa ocorreu em março de 2004;
  18. 18. O Spring 1.2.6 ganhou um prêmio Jolt produtividade e uma JAX InnovationAward em 2006.
  19. 19. A versão na qual está atualmente o Spring é 3.0.1</li></ul>Workshop Spring Framework<br />
  20. 20. Características do Spring<br /> Estrutura <br /> do <br /> Spring<br />Workshop Spring Framework<br />
  21. 21. Inversão de Controle<br />Container de Inversão de Controle (IoC)<br /> É o nome padrão dado ao desenvolvimento de programas onde a sequência de chamada dos métodos é invertida.<br />Um fluxo normal de execução acontece quando um determinado programa cria chamadas para outros programas e assim sucessivamente, deixando a criação dos componentes, o início da execução e o fim da execução sobe o controle do programador.<br />São exemplos de inversão de controle:<br /><ul><li> Programação Orientada a Eventos
  22. 22. Injeção de Dependência
  23. 23. Linguagens de Programação Funcional</li></ul>Workshop Spring Framework<br />
  24. 24. Injeção de Dependência?<br />O que é Dependência ?<br /><ul><li>É quando se prende um componente a outro por:
  25. 25. Herança
  26. 26. Composição
  27. 27. Instanciação
  28. 28. Instanciação por factory
  29. 29. Parâmetro de método
  30. 30. Uso de métodos ou atributos estáticos</li></ul>Workshop Spring Framework<br />
  31. 31. O que é Injeção de Dependência?<br /><ul><li>É uma forma de Inversão de Controle
  32. 32. Componente não instancia suas dependencias, mas o ambiente (conteiner) automaticamente as fornece.
  33. 33. Essa conceito é a principal fundamentação do Spring;
  34. 34. O objeto não chama o conteiner;
  35. 35. na verdade é o conteiner que chama o objeto.</li></ul>Workshop Spring Framework<br />
  36. 36. 1° Exemplo de Injeção de Dependências<br />publicclassGerenciadorUsuarios {<br />privateUsuarioDaousuarioDao = null;<br />publicvoidsetUsuarioDao (UsuarioDaousuarioDao) {<br />this.usuarioDao = usuario.Dao;<br /> }<br />UsuarioDaousuarioDao = newUsuarioDao();<br />usuarioDao.setServidorBancoDeDados("mysql.fragmental.com.br:3306");<br />usuarioDao.setUsuario("pcalcado");<br />usuarioDao.setSenha("jap123");<br />usuarioDao.setSchema("curso-spring");<br />usuarioDao.setDriverJdbc("com.mysql.jdbc.Driver");<br /> // ... e mais configurações<br /> //coloca o usuarioDao dentro do GerenciadorUsuarios<br />gerenciadorUsuarios.setUsuarioDao(usuarioDao);<br />}<br />Workshop Spring Framework<br />
  37. 37. 2° Exemplo de Injeção de Dependências<br />Ao invés de fazer assim:<br />Publicclass Empresa{<br /> Vendedor vendedor;<br />public Empresa(){<br /> vendedor = new Vendedor();<br /> }<br />}<br />Faria a injeção de Dependência assim deixando um objeto externo criar a dependência<br />ou seja a instância do objeto Vendedor :<br />Publicclass Empresa{<br /> Vendedor vendedor;<br />Public Empresa(){<br /> }<br />publicvoidsetVendedor(Vendedor vendedor){<br />this.vendedor = vendedor;<br /> }<br />}<br />Workshop Spring Framework<br />
  38. 38. Programação Orientada à aspecto<br /><ul><li>O conceito foi criado por Gregor Kiczales e a sua equipe na Xerox PARC , a divisão de pesquisa da Xerox.
  39. 39. Eles desenvolveram o Aspectl, a primeira e mais popular linguagem AOP.
  40. 40. Utiliza AOP para implementar o controle que realiza sobre seus beans;
  41. 41. A estrutura de AOP provida pelo framework não oferece todos os recursos de outras implementações mas os recursos oferecidos costumam ser mais que suficientes para a criação de aplicativos.</li></ul>Workshop Spring Framework<br />
  42. 42. Programação Orientada à aspecto<br />Exemplo:<br />Transferência Bancária<br />void transferir (Conta origem, Conta destino, int valor) { <br />if (origem.getSaldo() < valor) { <br />thrownewSaldoInsuficienteException(); <br />} <br />origem.debitar(valor); <br />destino.creditar(valor); } <br />Workshop Spring Framework<br />
  43. 43. void transferir(Conta origem, Conta destino, int valor) { i<br />f (!getUsuarioCorrente().temPermissao(OP_TRANSFERENCIA)) { <br />thrownewPermissaoException(); } <br />if (valor < 0) { <br />thrownewTransferenciaNegativaException(); <br />} <br />if (origem.getSaldo() < valor) { <br />thrownewSaldoInsuficienteException(); <br />} <br />Transactiontx = database.newTransaction(); <br />try { <br />origem.debitar(valor); destino.creditar(valor); tx.commit();<br />logger.logOperation(OP_TRANSFERENCIA, origem, destino, valor); <br />} <br />catch(Exception e) { <br />tx.rollback(); <br />} <br />} <br />Workshop Spring Framework<br />
  44. 44. Tutorial<br />
  45. 45. Configurando um novo projeto com suporte a Spring Web MVC<br /><ul><li>Crie um novo projeto para uma aplicação Web usando o Spring Framework:
  46. 46. Mostrar no Netbeans como fazer...</li></ul>Workshop Spring Framework<br />
  47. 47. <ul><li>O IDE cria um projeto para o aplicativo inteiro, incluindo todos os metadados, assim como o script de construção do projeto;</li></ul>Workshop Spring Framework<br />
  48. 48. Implementando um serviço<br /><ul><li>Criar classe: HelloService;
  49. 49. Pacote: service;</li></ul>Workshop Spring Framework<br />
  50. 50. Implementando o controlador e o modelo<br /><ul><li>Ctrl + N - Categorias  Spring Framework
  51. 51. Controlador de formulário simples
  52. 52. Classe: HelloController;
  53. 53. Pacote: controller</li></ul>Workshop Spring Framework<br />
  54. 54. Remover os comentários dos setter<br /><ul><li>publicHelloController() { setCommandClass(Name.class); setCommandName("name"); setSuccessView("helloView"); setFormView("nameView"); }</li></ul>Workshop Spring Framework<br />
  55. 55. Criando a classe Name<br /><ul><li>Novo  classe Java  Name
  56. 56. Pacote: controller
  57. 57. Criar um campo: value
  58. 58. Getter e setter</li></ul>Workshop Spring Framework<br />
  59. 59. <ul><li>Exclua o método doSubmit;
  60. 60. Retire os comenários de onSubmit();
  61. 61. Faça as seguintes alterações:
  62. 62. (Objectcommand) throws Exception {
  63. 63. Namename = (Name)command;
  64. 64. mv.addObject("helloMessage", helloService.sayHello(name.getValue()));</li></ul>Workshop Spring Framework<br />
  65. 65. <ul><li>Corrigir erros de importação;
  66. 66. No HelloController, declare:
  67. 67. private HelloService helloService;
  68. 68. Crie um setter público;
  69. 69. Corrigir importações;</li></ul>Workshop Spring Framework<br />
  70. 70. <ul><li>Registre HelloService em applicationContext.xml
  71. 71. Indique a declaração de bean:
  72. 72. <bean name="helloService" class="service.HelloService" /></li></ul>Workshop Spring Framework<br />
  73. 73. Registre HelloController em dispatcher-servlet.xml.<br /><ul><li>No editor de código-fonte:
  74. 74. <bean class="controller.HelloController" p:helloService-ref="helloService"/></li></ul>Workshop Spring Framework<br />
  75. 75. Implementando as visualizações<br /><ul><li>Vamos criar duas classes JSP:
  76. 76. helloView.jsp;
  77. 77. nameView.jsp;
  78. 78. Inserir: <h2>${helloMessage}</h2>
  79. 79. <%@taglib uri="http://www.springframework.org/tags" prefix="spring" %></li></ul>Workshop Spring Framework<br />
  80. 80. Em helloView<br />Insira abaixo das marcas <h2><br /> <spring:nestedPath path="name"> <formaction="" method="post"> Name: <spring:bind path="value"> <input type="text" name="${status.expression}" value="${status.value}"> </spring:bind> <input type="submit" value="OK"> </form> </spring:nestedPath> <br />Workshop Spring Framework<br />
  81. 81. Alterando o ponto de entrada do aplicativo<br /><ul><li>Janela projetos  Propriedades
  82. 82. Categorias  executar
  83. 83. URL relativa  /hello.htm</li></ul>Workshop Spring Framework<br />
  84. 84. Referências<br /><ul><li> http://www.guj.com.br/posts/list/55828.java,
  85. 85. http://martinfowler.com/articles/injection.html#InversionOfControl
  86. 86. http://www.springsource.org/</li></ul>Workshop Spring Framework<br />
  87. 87. Contatos<br />Email: darlanflorencio.a@gmail.com<br />Skype: darlan.arruda<br />Msn: darlan_arruda@hotmail.com<br />Twitter: @darlanflorencio<br />

×