Globalcode	
  –	
  Open4education
Turbinando sua Aplicação com CDI
Rodrigo Cândido da Silva
Instrutor VOffice / Globalcode
Globalcode	
  –	
  Open4education
Agenda
!   Injeção Dependência (IoC)
!   IoC no Java EE 5
!   CDI
!  Objetivo
!  Managed...
Globalcode	
  –	
  Open4education
Injeção Dependência (IoC)
!   Mecanismo de “injeção” de recursos necessários a
um compon...
Globalcode	
  –	
  Open4education
Injeção Dependência (IoC)
!   Sem injeção de dependência
!  Código fonte do componente A...
Globalcode	
  –	
  Open4education
Injeção Dependência (IoC)
class ComponenteA {
@EJB(name=“ejb/componenteB”) InterfaceB b;...
Globalcode	
  –	
  Open4education
IoC no Java EE 5
Globalcode	
  –	
  Open4education
IoC no Java EE 5
!   Limitações
!  Mecanismo muito básico de IoC
!  Não suporta a injeçã...
Globalcode	
  –	
  Open4education
Objetivo do CDI
Globalcode	
  –	
  Open4education
CDI no Java EE 6
Globalcode	
  –	
  Open4education
CDI (JSR-299)
Globalcode	
  –	
  Open4education
CDI (JSR-299)
!   CDI = Context Dependency Injection
!   Novo modelo para gerenciamento ...
Globalcode	
  –	
  Open4education
CDI (JSR-299)
!   Gerenciamento de ciclo de vida de componentes
statefull
!   Provê um m...
Globalcode	
  –	
  Open4education
CDI Managed Beans
Globalcode	
  –	
  Open4education
CDI Managed Beans
!   Nova definição para
“beans
!   Instâncias são
gerenciadas pelo
con...
Globalcode	
  –	
  Open4education
Configuração CDI
Globalcode	
  –	
  Open4education
Hello World
Globalcode	
  –	
  Open4education
O que pode ser injetado
!   CDI Managed Beans (POJO)
!   Objetos retornados por @Produce...
Globalcode	
  –	
  Open4education
Principais Recursos
!  Injection Points
!  Qualifiers
!  Alternatives
!  EL Names
!  Pro...
Globalcode	
  –	
  Open4education
Injection Points
Globalcode	
  –	
  Open4education
Qualifiers
Globalcode	
  –	
  Open4education
Alternatives
Globalcode	
  –	
  Open4education
EL Names
Globalcode	
  –	
  Open4education
Producer Methods
Globalcode	
  –	
  Open4education
Java EE Resources
Globalcode	
  –	
  Open4education
Java EE Resources
Globalcode	
  –	
  Open4education
Scopes and Contexts
!   Define um modelo de escopos extensível
!   Escopo dependente - @...
Globalcode	
  –	
  Open4education
Scopes and Contexts
Globalcode	
  –	
  Open4education
Conversation Scoped
Globalcode	
  –	
  Open4education
Interceptors
Globalcode	
  –	
  Open4education
Stereotypes
Globalcode	
  –	
  Open4education
Events
Globalcode	
  –	
  Open4education
Demo
Globalcode	
  –	
  Open4education
Implementações
!   Weld / Seam
!  Implementação de referência (RI)
!  Incluída no JBoss ...
Globalcode	
  –	
  Open4education
Sumário
!   Java EE 6 é mais “enxuto” e mais produtivo
!   CDI (JSR-299) fornece uma lis...
Globalcode	
  –	
  Open4education
Referências
!  JSRs
!  http://jcp.org/en/jsr/summary?id=299
!  http://jcp.org/en/jsr/sum...
Globalcode	
  –	
  Open4education
Perguntas e Respostas
?
Upcoming SlideShare
Loading in …5
×

TDC2010 - Turbinando sua Aplicação com CDI

3,454 views
3,347 views

Published on

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

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

No notes for slide

TDC2010 - Turbinando sua Aplicação com CDI

  1. 1. Globalcode  –  Open4education Turbinando sua Aplicação com CDI Rodrigo Cândido da Silva Instrutor VOffice / Globalcode
  2. 2. Globalcode  –  Open4education Agenda !   Injeção Dependência (IoC) !   IoC no Java EE 5 !   CDI !  Objetivo !  Managed Beans !  Principais Recursos !   Demo !   Sumário !   Perguntas e Respostas
  3. 3. Globalcode  –  Open4education Injeção Dependência (IoC) !   Mecanismo de “injeção” de recursos necessários a um componente de forma automática !  Sem a presença de instruções explícitas para acessar o recurso !   Exemplo: !  O componente de negócios A depende do componente de negócios B e do pool de conexões C. A B C
  4. 4. Globalcode  –  Open4education Injeção Dependência (IoC) !   Sem injeção de dependência !  Código fonte do componente A contém instruções para “buscar” o componente B e o recurso C A B C Serviço de Nomes “ejb/componenteB” “jdbc/dataSourceC” lookups
  5. 5. Globalcode  –  Open4education Injeção Dependência (IoC) class ComponenteA { @EJB(name=“ejb/componenteB”) InterfaceB b; @Resource(name=“jdbc/dataSourceC”) DataSource c; } A B C Serviço de Nomes “ejb/componenteB” “jdbc/dataSourceC” injeção
  6. 6. Globalcode  –  Open4education IoC no Java EE 5
  7. 7. Globalcode  –  Open4education IoC no Java EE 5 !   Limitações !  Mecanismo muito básico de IoC !  Não suporta a injeção de POJOs !  Somente componentes Java EE !  Não suporta customização !  Não tem tipagem definida !  Lista limitada de anotações !  @EJB !  @PersistenceContext, @PersistenceUnit !  @Resource
  8. 8. Globalcode  –  Open4education Objetivo do CDI
  9. 9. Globalcode  –  Open4education CDI no Java EE 6
  10. 10. Globalcode  –  Open4education CDI (JSR-299)
  11. 11. Globalcode  –  Open4education CDI (JSR-299) !   CDI = Context Dependency Injection !   Novo modelo para gerenciamento de beans e injeção de dependência !   Nova definição para escopos de aplicação !   Também conhecido como “Web Beans” !   Integra as camadas web e negócio da aplicação !  Facilita a implementação das aplicações que utilizam tecnologias como JSF e EJB (Java EE)
  12. 12. Globalcode  –  Open4education CDI (JSR-299) !   Gerenciamento de ciclo de vida de componentes statefull !   Provê um mecanismo de DI typesafe !   Disponibiliza mecanismo de eventos facilitando o desenvolvimento com baixo acoplamento !   Tem um mecanismo de Interceptors e Decorators !   Possibilita a criação de extensões portáveis para qualquer implementação !   Integração com EL
  13. 13. Globalcode  –  Open4education CDI Managed Beans
  14. 14. Globalcode  –  Open4education CDI Managed Beans !   Nova definição para “beans !   Instâncias são gerenciadas pelo container !   Serviços disponíveis !  Injeção de Dependência !  Ciclo de vida !  Interceptors !  Events
  15. 15. Globalcode  –  Open4education Configuração CDI
  16. 16. Globalcode  –  Open4education Hello World
  17. 17. Globalcode  –  Open4education O que pode ser injetado !   CDI Managed Beans (POJO) !   Objetos retornados por @Produces !   EJB Session Bean (local ou remoto) !   Java EE Resources (DataSource, JMS) !   JTA UserTransaction !   EntityManager (JPA) !   Bean Validation Factory !   Destination e ConnectionFactory JMS
  18. 18. Globalcode  –  Open4education Principais Recursos !  Injection Points !  Qualifiers !  Alternatives !  EL Names !  Producer Methods !  Java EE Resources !  Scopes and Contexts !  Interceptors !  Stereotypes !  Events
  19. 19. Globalcode  –  Open4education Injection Points
  20. 20. Globalcode  –  Open4education Qualifiers
  21. 21. Globalcode  –  Open4education Alternatives
  22. 22. Globalcode  –  Open4education EL Names
  23. 23. Globalcode  –  Open4education Producer Methods
  24. 24. Globalcode  –  Open4education Java EE Resources
  25. 25. Globalcode  –  Open4education Java EE Resources
  26. 26. Globalcode  –  Open4education Scopes and Contexts !   Define um modelo de escopos extensível !   Escopo dependente - @Dependent !  Escopo padrão de todas classes !  Significa que o objeto “injetado” encontra-se no mesmo escopo e tem o mesmo ciclo de vida do objeto cliente !   Outros escopos disponíveis !  @ApplicationScoped !  @RequestScoped !  @SessionScoped !  @ConversationScoped !   Request <= Conversation <= Session
  27. 27. Globalcode  –  Open4education Scopes and Contexts
  28. 28. Globalcode  –  Open4education Conversation Scoped
  29. 29. Globalcode  –  Open4education Interceptors
  30. 30. Globalcode  –  Open4education Stereotypes
  31. 31. Globalcode  –  Open4education Events
  32. 32. Globalcode  –  Open4education Demo
  33. 33. Globalcode  –  Open4education Implementações !   Weld / Seam !  Implementação de referência (RI) !  Incluída no JBoss AS e Glassfish !  Utilizado como base para Seam 3 !  Extensões para Spring, Drools, jBPM, JBoss ESB, GWT !   CanDI !  Caucho (Resin) !  Extensões para iBATIS, Struts 2, Wicket, Quartz, JMS, JDBC !   OpenWebBeans !  Apache (Geronimo) !  Integra com OpenEJB e funciona no Tomcat
  34. 34. Globalcode  –  Open4education Sumário !   Java EE 6 é mais “enxuto” e mais produtivo !   CDI (JSR-299) fornece uma lista de serviços !  Integração JSF com EJB !  Desacoplamento com forte tipagem !  Modelo de eventos !  Integração com Interceptors !  API extensível para implementação customizada
  35. 35. Globalcode  –  Open4education Referências !  JSRs !  http://jcp.org/en/jsr/summary?id=299 !  http://jcp.org/en/jsr/summary?id=330 !  Implementações !  http://seamframework.org/Weld !  http://openwebbeans.apache.org/ !  http://www.caucho.com/projects/candi/ !  Tutoriais !  http://docs.jboss.org/weld/reference/1.0.1-Final/en-US/html/ !  http://download.oracle.com/javaee/6/tutorial/doc/giwhb.html !  http://www.theserverside.com/news/1373391/Dependency- Injection-in-Java-EE-6-Part-1
  36. 36. Globalcode  –  Open4education Perguntas e Respostas ?

×