CDI -Contextos e Dependências

2,265 views

Published on

Apresentação sobre CDI -Contextos e Dependências, com vários exemplos

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,265
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
93
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

CDI -Contextos e Dependências

  1. 1. CDIContextos e Injeção de Dependências
  2. 2. O QUE É CDI? CDI API, que implementa a injeção de dependência e contextos. Parte da especificação do Java EE 6 (JSR 299). Uma alternatva para os fameworks de injeção de dependência como Spring ou Google Guice. Um sucessor do JBOSS Seam Framework.
  3. 3. CDI no Java EE 6 CDI
  4. 4. O QUE É INJEÇÃO DEDEPENDÊNCIA? CDI Basicamente instanciação de objetos. O objetos são criados por umcontainer que os associa a um contexto e gerencia seu ciclo de vida. As referências ente instâncias também são inicializadas pelocontainer e são injetados no objeto. A configuração de criação do objeto e a injeção é feita utlizando: Anotações. Configuração de XML. Código Java.
  5. 5. POR QUE EU PRECISO DEINJEÇÃO DE DEPENDÊNCIA? CDI Manter o baixo acoplamento ente os componentes. Facilidade na criação de testes. Código mais limpo. Isto leva a um maior grau de fexibilidade para diferentes configurações de um aplicatvo (por exemplo, em cenários de teste, ambientes de integração e a reutlização em outas aplicações ou contextos).
  6. 6. O que são contextos? CDI Os contextos determinam o ciclo de vida dos componentes, na CDI (duração e visibilidade) dos objetos. O desenvolvedor configura o escopo usando anotações: @ApplicatonScoped (aplicação). @SessionScoped (sessão do usuário). @ConversatonScoped (conversação). @RequestScoped (http request). @Dependent (depende do ciclo de vida do compomente referenciado).
  7. 7. CDI EXECUTA APENAS NOSSERVIDORES DE APLICAÇÃO? CDI Não. Weld (implementação de referência da CDI) pode ser usado em: Aplicações Java SE. Aplicações em execução nos containers de servlets como o Apache Tomcat. Servidores de aplicações Java EE. (obrigatóriamente Java EE 6).
  8. 8. COMO CDI SE INTEGRA COMOUTROS FRAMEWORKS? CDI CDI é altamente integrado com: JSP Expression Language. Java Server Faces (incluindo Facelets, JSF Expression Language). Enterprise JavaBeans.
  9. 9. PELO QUE O CDI ÉRESPONSÁVEL CDI Por permitr que qualquer um de seus objetos gernciados sejam acessíveis diretamente por um inferface JSF ou JSP atavés de Unified Expression Language(EL). Oferecer novo mecanismo de declaração de interceptadores facamente acoplados. Habilidade de “decorar” objetos injetados.
  10. 10. PELO QUE O CDI É CDIRESPONSÁVEL Um modelo de notficação de eventos. Um novo contexto web, somando ao Request, Applicaton e Session, chamado de Conversaton. Fornecer um conjunto de SPI, Service Provide Interface, para possibilitar extensões portáveis.
  11. 11. ASPECTOS DA CDI CDI Objeto gerenciável pela especificação, o “Bean”. Uma vez tendo uma aplicação CDI, todos os “beans” do projeto passam a ser gerenciados pelo servidor de aplicação.
  12. 12. ASPECTOS DA CDI CDI Resolução de tpos a serem injetados nas dependências de um “bean” (Typesafe Resoluton – mecanismo de tpagem para DI), com algumas vantagens: Prevenção conta erros de injeção em tempo de execução. Apoio de ferramentas IDE para produtvidade. Clareza nos códigos. Ente outas...
  13. 13. MAS O QUE É DE FATO UMBEAN? CDI O Java EE 6 define dois tpos de beans passíveis de serem manipulados pela CDI: Managed Beans. Session Beans.
  14. 14. MANAGED BEANS CDINa CDI, um bean do tpo Managed Bean é qualquer classe java que: Seja concreta ou anotada com @Decorator. Tenha pelo menos um constutor sem parâmeto ou anotado com @Inject. Não seja um EJB. Não seja uma JPA Entty. Não seja uma classe interna. Não implemente a interface javax.enterprise.inject.spi.Extension
  15. 15. SESSION BEANS CDI Componentes gerenciados pelo servidor de aplicação definidos pela especificação Enterprise JavaBeans. Quem define seu gerenciamento de estado é sua especificação e não a CDI. Contudo, todas as fncionalidades expostas para uma bean do tpo Managed Bean também é válida para o bean do tpo Session Bean.
  16. 16. DE QUE MANEIRA ÉREALIZADA A INJEÇÃO? CDI Atavés de tês formas: Injeção por atibuto. Injeção por método set. Injeção por constutor.
  17. 17. FUNCIONALIDADES CDI Injeção de dependência básica. @Inject, @Qualifier, @Stereotype, @Alternatve, @Instance, @All, @Any Nome de componente. @Named Gerenciamento de contexto. @Dependent, @RequestScoped, @SessionScoped, @ConversatonScoped, @ApplicatonScoped, @Scope
  18. 18. FUNCIONALIDADES CDI Fabrica de objetos customizados. @Produces, @Disposes, InjectonPoint Eventos. @Event, @Observes Interceptadores/Decoradores. @Interceptor, @InterceptorBinding, @AroundInvoke, @InvocatonContext, @Decorator, @Delegate
  19. 19. ECOSSISTEMA CDI
  20. 20. IMPLEMENTAÇÕES CDI Weld – implementação de referência (JBoss). CanDI (Caucho). OpenWebBeans (Apache).
  21. 21. Weld CDIImplementação de referência da CDI.Documentação de referência excelente.Evoluída a partr do core do Seam 2.Incluída no GlassFish e Jboss AS.Pode ser usada com o Tomcat, Jetty.Pode ser usada em aplicações Java SE.
  22. 22. Relação entre CDI, Weld e CDISeam 3
  23. 23. CanDI CDI Implementação incluida no servidor de aplicação Resin da Caucho. CanDI forma o core do Resin. Configuração de tpagem por XML, compacta. Usa anotações como @TransactonAttribute, @Schedule, @Asynchronous, @RolesAllowed, @RunAs, @Lock, @Startup and @Remote. Incorporado a container de famework de testes que integram EJB, JPA com Junit.
  24. 24. CanDI e Resin CDI
  25. 25. OpenWebBeans CDI Implementação da Apache incluída no Gerônimo. Intmamente relacionado com Apache OpenEJB. Grande integração com o Tomcat junto com OpenEJB. Injeção estendida de objetos JMS (sessões, conexões de fábricas). Roda aplicações Java SE. Portável para extensões de grandes projetos da Apache.
  26. 26. OpenWebBeans e Geronimo CDI
  27. 27. Servidores de Aplicações CDIJava EE 6
  28. 28. GlassFish v3 CDI Implementação de referência Java EE 6 open source. Totalmente apoiado pela Oracle. Mais antga runtme Java EE 6. Suporte total a plataforma bem com ao Web Profile. Arquitetura modular baseado em OSGi. Pooling excelente, clustering e fncionalidades administatvas. Container embutdo para testar.
  29. 29. JBoss AS 6 CDI Servidor de aplicação open source Java mais utlizado. Recentemente implementou Java EE 6 Web Profile TCK. Implementação completa do Profile Java EE 6. Pooling, caching, clustering administados pelo console. HornetQ excelente implementação JMS.
  30. 30. Resin 4 CDI Servidor de aplicações open soruce Java EE 6 Web Profile, concenta-se em ser rápido, leve. Suporta agendamento, processamento assíncrono, comunicação remota Hessian, message-driven beans e JMS. Servidor HTTP, proxy caching, load-balancing, pooling, clustering, caching, suporta cloud, SSL. Executa PHP em Java.
  31. 31. Geronimo 3 CDI Servidor de aplicação open source lencenciado pela Apache. Base para o IBM WebShere Community Editon. Em breve tera a implementação completa do Java EE 6 Web Profile TCK. OSGi, clustering, administação pelo console. Inclui Tomcat / Jetty, MyFaces, OpenWebBeans, OpenEJB, OpenJPA, ActveMQ, CXF / Axi, Derby. TomEE, Tomcat voltado para o Java EE 6 Web Profile.
  32. 32. Cade os Exemplos ??
  33. 33. Exemplo @Named CDI
  34. 34. Exemplo @NamedJSF CDI
  35. 35. Exemplo @NamedBrowse CDI
  36. 36. Exemplo @NamedBrowse CDI
  37. 37. Só isso de exemplo ??
  38. 38. Exemplo Controller CDI
  39. 39. Exemplo Caixa Eletrônico CDI
  40. 40. Exemplo Saldo InicialSem @Inject CDI
  41. 41. Exemplo ClasseMovimentação CDI
  42. 42. Exemplo CriaçãoStereotype CDI
  43. 43. Exemplo JSFConta Bancária CDI
  44. 44. Exemplo Tela semProduces CDI
  45. 45. Exemplo Injeção UtilizandoProduces CDI
  46. 46. Exemplo CriandoProduces CDI
  47. 47. Exemplo Tela comProduces CDI
  48. 48. Exemplo Tela Sacando CDI
  49. 49. Exemplo Interceptor CDI
  50. 50. Exemplo XMLInterceptor CDI
  51. 51. Exemplo ControllerQualifier Padrão CDI
  52. 52. Exemplo InterfaceRepository CDI
  53. 53. Exemplo QualifierPadrão CDI
  54. 54. Exemplo JSFQualifier CDI
  55. 55. Exemplo TelaQualifier CDI
  56. 56. Exemplo Controller UsandoQualifier Específico CDI
  57. 57. Exemplo QualifierEspecífico CDI
  58. 58. Exemplo Qualifier EspecíficoSem Anotação CDI
  59. 59. Exemplo Qualifier EspecíficoCom Anotação CDI
  60. 60. Exemplo QualifierEspecífico CDI
  61. 61. Exemplo XML CDI
  62. 62. Exemplo Tela QualifierEspecífico CDI
  63. 63. Exemplo Alternatives CDI
  64. 64. Exemplo InterfaceAlternatives CDI
  65. 65. Exemplo MensagemAlternatives Padrão CDI
  66. 66. Exemplo JSFAlternatives CDI
  67. 67. Exemplo XML SemAlternatives CDI
  68. 68. Exemplo TelaAlternatives CDI
  69. 69. Exemplo MensagemAlternatives CDI
  70. 70. Exemplo XML comAlternatives CDI
  71. 71. Exemplo Tela UtilizandoImplementação Alternatives CDI
  72. 72. Quero saber daConversaton ??
  73. 73. Exemplo Controller UsandoConversationScoped CDI
  74. 74. Exemplo JSPConversationScoped CDI
  75. 75. Exemplo Tela InicialConversationScoped CDI
  76. 76. Exemplo Utilizando Tela semConversationScoped CDI
  77. 77. Exemplo Utilizando Tela semConversationScoped CDI
  78. 78. Exemplo Tela IniciandoConversationScoped CDI
  79. 79. Exemplo Utilizando Tela comConversationScoped CDI
  80. 80. Exemplo Utilizando Tela comConversationScoped CDI
  81. 81. Obrigado

×