SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
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 Beans
!  Principais Recursos
!   Demo
!   Sumário
!   Perguntas e Respostas
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
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
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
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çã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
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 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)
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
Globalcode	
  –	
  Open4education
CDI Managed Beans
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
Globalcode	
  –	
  Open4education
Configuração CDI
Globalcode	
  –	
  Open4education
Hello World
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
Globalcode	
  –	
  Open4education
Principais Recursos
!  Injection Points
!  Qualifiers
!  Alternatives
!  EL Names
!  Producer Methods
!  Java EE Resources
!  Scopes and Contexts
!  Interceptors
!  Stereotypes
!  Events
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 - @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
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 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
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
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
Globalcode	
  –	
  Open4education
Perguntas e Respostas
?

Mais conteúdo relacionado

Semelhante a TDC2010 - Turbinando sua Aplicação com CDI

TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA  TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
Rodrigo Cândido da Silva
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais rico
Eder Magalhães
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
Cleber Dantas
 
TDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityTDC 2012 Trilha – Android University
TDC 2012 Trilha – Android University
Inael Rodrigues
 

Semelhante a TDC2010 - Turbinando sua Aplicação com CDI (20)

TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA  TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
TDC2012 - Implementando aplicativos Web com JSF, CDI e JPA
 
CDI -Contextos e Dependências
CDI -Contextos e DependênciasCDI -Contextos e Dependências
CDI -Contextos e Dependências
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais rico
 
Introducao Spring ROO
Introducao Spring ROOIntroducao Spring ROO
Introducao Spring ROO
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App Engine
 
Java e uma visão sobre PaaS
Java e uma visão sobre PaaSJava e uma visão sobre PaaS
Java e uma visão sobre PaaS
 
Os 5 Níveis de Reuso
Os 5 Níveis de ReusoOs 5 Níveis de Reuso
Os 5 Níveis de Reuso
 
Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!
 
JSF 2 - Java "Super" Faces
JSF 2 - Java "Super" FacesJSF 2 - Java "Super" Faces
JSF 2 - Java "Super" Faces
 
Implementando aplicativos Web com JSF
Implementando aplicativos Web com JSF Implementando aplicativos Web com JSF
Implementando aplicativos Web com JSF
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
JSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaJSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com Java
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
 
Java CDI: Usando Java CDI em projetos Jakarta EE ou Microprofile
Java CDI: Usando Java CDI em projetos Jakarta EE ou MicroprofileJava CDI: Usando Java CDI em projetos Jakarta EE ou Microprofile
Java CDI: Usando Java CDI em projetos Jakarta EE ou Microprofile
 
TDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityTDC 2012 Trilha – Android University
TDC 2012 Trilha – Android University
 
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipster
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipsterGerando aplicações Spring Boot e AngularJS com gerador de código JHipster
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipster
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
A Revolução já começou
A Revolução já começouA Revolução já começou
A Revolução já começou
 

Mais de Rodrigo Cândido da Silva

QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
Rodrigo Cândido da Silva
 

Mais de Rodrigo Cândido da Silva (20)

Java 9, 10 e ... 11
Java 9, 10 e ... 11Java 9, 10 e ... 11
Java 9, 10 e ... 11
 
Cloud Native Java EE
Cloud Native Java EECloud Native Java EE
Cloud Native Java EE
 
Protegendo Microservices: Boas Práticas e Estratégias de Implementação
Protegendo Microservices: Boas Práticas e Estratégias de ImplementaçãoProtegendo Microservices: Boas Práticas e Estratégias de Implementação
Protegendo Microservices: Boas Práticas e Estratégias de Implementação
 
Protecting Java Microservices: Best Practices and Strategies
Protecting Java Microservices: Best Practices and StrategiesProtecting Java Microservices: Best Practices and Strategies
Protecting Java Microservices: Best Practices and Strategies
 
As novidades da nova versão do Java 9
As novidades da nova versão do Java 9As novidades da nova versão do Java 9
As novidades da nova versão do Java 9
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
 
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSSWorkshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
 
Workshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring BootWorkshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring Boot
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
 
GUJavaSC - Protegendo Microservices em Java
GUJavaSC - Protegendo Microservices em JavaGUJavaSC - Protegendo Microservices em Java
GUJavaSC - Protegendo Microservices em Java
 
TDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com JavaTDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com Java
 
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOpsGUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
 
GUJavaSC - Criando Micro-serviços Reativos com Java
GUJavaSC - Criando Micro-serviços Reativos com JavaGUJavaSC - Criando Micro-serviços Reativos com Java
GUJavaSC - Criando Micro-serviços Reativos com Java
 
JavaOne 2016 - Reactive Microservices with Java and Java EE
JavaOne 2016 - Reactive Microservices with Java and Java EEJavaOne 2016 - Reactive Microservices with Java and Java EE
JavaOne 2016 - Reactive Microservices with Java and Java EE
 
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EEJavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
 
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data RESTJavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
 
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring CloudTDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
 
GUJavaSC - Combinando AngularJS com Java EE
GUJavaSC - Combinando AngularJS com Java EEGUJavaSC - Combinando AngularJS com Java EE
GUJavaSC - Combinando AngularJS com Java EE
 
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
 
QCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EEQCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EE
 

TDC2010 - Turbinando sua Aplicação com CDI