Você está na página 1de 81

CDI

Contextos e Injeo de Dependncias

O QUE CDI?

CDI

API, que implementa a injeo de dependncia e contextos. Parte da especificao do Java EE 6 (JSR 299). Uma alternatva para os fameworks de injeo de dependncia como Spring ou Google Guice. Um sucessor do JBOSS Seam Framework.

CDI no Java EE 6

CDI

O QUE INJEO DE DEPENDNCIA?

CDI

container que os associa a um contexto e gerencia seu ciclo de vida. container e so injetados no objeto. As referncias ente instncias tambm so inicializadas pelo

Basicamente instanciao de objetos. O objetos so criados por um

A configurao de criao do objeto e a injeo feita utlizando: Anotaes. Configurao de XML. Cdigo Java.

POR QUE EU PRECISO DE INJEO DE DEPENDNCIA?


Manter o baixo acoplamento ente os componentes. Facilidade na criao de testes. Cdigo mais limpo.

CDI

configuraes de um aplicatvo (por exemplo, em cenrios de teste, ambientes de integrao e a reutlizao em outas aplicaes ou contextos).

Isto leva a um maior grau de fexibilidade para diferentes

O que so contextos?
na CDI (durao e visibilidade) dos objetos.

Os contextos determinam o ciclo de vida dos componentes, O desenvolvedor configura o escopo usando anotaes: @ApplicatonScoped (aplicao). @SessionScoped (sesso do usurio). @ConversatonScoped (conversao). @RequestScoped (http request). @Dependent (depende do ciclo de vida do compomente referenciado).

CDI

CDI EXECUTA APENAS NOS SERVIDORES DE APLICAO?


usado em:

CDI

No. Weld (implementao de referncia da CDI) pode ser Aplicaes Java SE. Aplicaes em execuo nos containers de servlets como o

Apache Tomcat. Servidores de aplicaes Java EE. (obrigatriamente Java EE 6).

COMO CDI SE INTEGRA COM OUTROS FRAMEWORKS?

CDI

CDI altamente integrado com: JSP Expression Language. Language). Java Server Faces (incluindo Facelets, JSF Expression Enterprise JavaBeans.

PELO QUE O CDI RESPONSVEL

CDI

sejam acessveis diretamente por um inferface JSF ou JSP atavs de Unified Expression Language(EL).

Por permitr que qualquer um de seus objetos gernciados

Oferecer novo mecanismo de declarao de interceptadores facamente acoplados. Habilidade de decorar objetos injetados.

PELO QUE O CDI RESPONSVEL


Um modelo de notficao de eventos. e Session, chamado de Conversaton.

CDI

Um novo contexto web, somando ao Request, Applicaton Fornecer um conjunto de SPI, Service Provide Interface,

para possibilitar extenses portveis.

ASPECTOS DA CDI

CDI

Objeto gerencivel pela especificao, o Bean. Uma vez tendo uma aplicao CDI, todos os beans do projeto passam a ser gerenciados pelo servidor de aplicao.

ASPECTOS DA CDI

CDI

um bean (Typesafe Resoluton mecanismo de tpagem para DI), com algumas vantagens: Preveno conta erros de injeo em tempo de execuo. Apoio de ferramentas IDE para produtvidade. Clareza nos cdigos. Ente outas...

Resoluo de tpos a serem injetados nas dependncias de

MAS O QUE DE FATO UM BEAN?

CDI

serem manipulados pela CDI: Managed Beans. Session Beans.

O Java EE 6 define dois tpos de beans passveis de

MANAGED BEANS

CDI

Na CDI, um bean do tpo Managed Bean qualquer classe java que: Seja concreta ou anotada com @Decorator. @Inject. Tenha pelo menos um constutor sem parmeto ou anotado com No seja um EJB. No seja uma JPA Entty. No seja uma classe interna. No implemente a interface javax.enterprise.inject.spi.Extension

SESSION BEANS

CDI

definidos pela especificao Enterprise JavaBeans. Quem define seu gerenciamento de estado sua especificao e no a CDI.

Componentes gerenciados pelo servidor de aplicao

Contudo, todas as fncionalidades expostas para uma bean do tpo Managed Bean tambm vlida para o bean do tpo Session Bean.

DE QUE MANEIRA REALIZADA A INJEO?

CDI

Atavs de ts formas: Injeo por atibuto. Injeo por mtodo set. Injeo por constutor.

FUNCIONALIDADES
Injeo de dependncia bsica.

CDI

@Inject, @Qualifier, @Stereotype, @Alternatve, @Instance, @All, @Any Nome de componente. @Named Gerenciamento de contexto. @Dependent, @RequestScoped, @SessionScoped, @ConversatonScoped, @ApplicatonScoped, @Scope

FUNCIONALIDADES
Fabrica de objetos customizados. @Produces, @Disposes, InjectonPoint Eventos. @Event, @Observes Interceptadores/Decoradores.

CDI

@Interceptor, @InterceptorBinding, @AroundInvoke, @InvocatonContext, @Decorator, @Delegate

ECOSSISTEMA

CDI

IMPLEMENTAES

CDI

Weld implementao de referncia (JBoss). CanDI (Caucho). OpenWebBeans (Apache).

Weld

CDI

Implementao de referncia da CDI. Documentao de referncia excelente. Evoluda a partr do core do Seam 2. Includa no GlassFish e Jboss AS. Pode ser usada com o Tomcat, Jetty. Pode ser usada em aplicaes Java SE.

Relao entre CDI, Weld e Seam 3

CDI

CanDI
Caucho. CanDI forma o core do Resin. Configurao de tpagem por XML, compacta.

CDI

Implementao incluida no servidor de aplicao Resin da

Usa anotaes como @TransactonAttribute, @Schedule, @Asynchronous, @RolesAllowed, @RunAs, @Lock, @Startup and @Remote. Incorporado a container de famework de testes que integram EJB, JPA com Junit.

CanDI e Resin

CDI

OpenWebBeans

CDI

Implementao da Apache includa no Gernimo. Intmamente relacionado com Apache OpenEJB. Grande integrao com o Tomcat junto com OpenEJB. Injeo estendida de objetos JMS (sesses, conexes de fbricas). Roda aplicaes Java SE. Portvel para extenses de grandes projetos da Apache .

OpenWebBeans e Geronimo

CDI

Servidores de Aplicaes Java EE 6

CDI

GlassFish v3
Totalmente apoiado pela Oracle. Mais antga runtme Java EE 6.

Implementao de referncia Java EE 6 open source.

CDI

Suporte total a plataforma bem com ao Web Profile. Arquitetura modular baseado em OSGi. Pooling excelente, clustering e fncionalidades administatvas. Container embutdo para testar.

JBoss AS 6

CDI

Servidor de aplicao open source Java mais utlizado. Recentemente implementou Java EE 6 Web Profile TCK. Implementao completa do Profile Java EE 6. Pooling, caching, clustering administados pelo console. HornetQ excelente implementao JMS.

Resin 4

CDI

Servidor de aplicaes open soruce Java EE 6 Web Profile, concenta-se em ser rpido, leve. comunicao remota Hessian, message-driven beans e JMS. clustering, caching, suporta cloud, SSL. Executa PHP em Java. Servidor HTTP, proxy caching, load-balancing, pooling, Suporta agendamento, processamento assncrono,

Geronimo 3

CDI

Servidor de aplicao open source lencenciado pela Apache. Base para o IBM WebShere Community Editon. Profile TCK. Em breve tera a implementao completa do Java EE 6 Web OSGi, clustering, administao pelo console. OpenJPA, ActveMQ, CXF / Axi, Derby. Inclui Tomcat / Jetty, MyFaces, OpenWebBeans, OpenEJB, TomEE, Tomcat voltado para o Java EE 6 Web Profile.

Cade os Exemplos ??

Exemplo @Named

CDI

Exemplo @Named JSF

CDI

Exemplo @Named Browse

CDI

Exemplo @Named Browse

CDI

S isso de exemplo ??

Exemplo Controller

CDI

Exemplo Caixa Eletrnico

CDI

Exemplo Saldo Inicial Sem @Inject

CDI

Exemplo Classe Movimentao

CDI

Exemplo Criao Stereotype

CDI

Exemplo JSF Conta Bancria

CDI

Exemplo Tela sem Produces

CDI

Exemplo Injeo Utilizando Produces

CDI

Exemplo Criando Produces

CDI

Exemplo Tela com Produces

CDI

Exemplo Tela Sacando

CDI

Exemplo Interceptor

CDI

Exemplo XML Interceptor

CDI

Exemplo Controller Qualifier Padro

CDI

Exemplo Interface Repository

CDI

Exemplo Qualifier Padro

CDI

Exemplo JSF Qualifier

CDI

Exemplo Tela Qualifier

CDI

Exemplo Controller Usando Qualifier Especfico

CDI

Exemplo Qualifier Especfico

CDI

Exemplo Qualifier Especfico Sem Anotao

CDI

Exemplo Qualifier Especfico Com Anotao

CDI

Exemplo Qualifier Especfico

CDI

Exemplo XML

CDI

Exemplo Tela Qualifier Especfico

CDI

Exemplo Alternatives

CDI

Exemplo Interface Alternatives

CDI

Exemplo Mensagem Alternatives Padro

CDI

Exemplo JSF Alternatives

CDI

Exemplo XML Sem Alternatives

CDI

Exemplo Tela Alternatives

CDI

Exemplo Mensagem Alternatives

CDI

Exemplo XML com Alternatives

CDI

Exemplo Tela Utilizando Implementao Alternatives

CDI

Quero saber da Conversaton ??

Exemplo Controller Usando ConversationScoped

CDI

Exemplo JSP ConversationScoped

CDI

Exemplo Tela Inicial ConversationScoped

CDI

Exemplo Utilizando Tela sem ConversationScoped

CDI

Exemplo Utilizando Tela sem ConversationScoped

CDI

Exemplo Tela Iniciando ConversationScoped

CDI

Exemplo Utilizando Tela com ConversationScoped

CDI

Exemplo Utilizando Tela com ConversationScoped

CDI

Obrigado

Você também pode gostar