cdi -contextos e dependências

81
CDI Conxs e Injeção de Dependências

Upload: wende-mendes

Post on 14-May-2015

1.732 views

Category:

Documents


3 download

DESCRIPTION

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

TRANSCRIPT

Page 1: CDI -Contextos e Dependências

CDI Contextos e Injeção de Dependências

Page 2: CDI -Contextos e Dependências

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.

O QUE É CDI?

Page 3: CDI -Contextos e Dependências

CDI

CDI no Java EE 6

Page 4: CDI -Contextos e Dependências

CDI Basicamente instanciação de objetos. O objetos são criados por um

container que os associa a um contexto e gerencia seu ciclo de vida.

As referências ente instâncias também são inicializadas pelo container 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.

O QUE É INJEÇÃO DE DEPENDÊNCIA?

Page 5: CDI -Contextos e Dependências

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).

POR QUE EU PRECISO DE INJEÇÃO DE DEPENDÊNCIA?

Page 6: CDI -Contextos e Dependências

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).

O que são contextos?

Page 7: CDI -Contextos e Dependências

CDINã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).

CDI EXECUTA APENAS NOS SERVIDORES DE APLICAÇÃO?

Page 8: CDI -Contextos e Dependências

CDI

CDI é altamente integrado com:

JSP Expression Language.

Java Server Faces (incluindo Facelets, JSF Expression Language).

Enterprise JavaBeans.

COMO CDI SE INTEGRA COM OUTROS FRAMEWORKS?

Page 9: CDI -Contextos e Dependências

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.

PELO QUE O CDI É RESPONSÁVEL

Page 10: CDI -Contextos e Dependências

CDI

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.

PELO QUE O CDI É RESPONSÁVEL

Page 11: CDI -Contextos e Dependências

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.

ASPECTOS DA CDI

Page 12: CDI -Contextos e Dependências

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...

ASPECTOS DA CDI

Page 13: CDI -Contextos e Dependências

CDI

O Java EE 6 define dois tpos de beans passíveis de serem manipulados pela CDI:

Managed Beans.

Session Beans.

MAS O QUE É DE FATO UM BEAN?

Page 14: CDI -Contextos e Dependências

CDI Na 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

MANAGED BEANS

Page 15: CDI -Contextos e Dependências

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.

SESSION BEANS

Page 16: CDI -Contextos e Dependências

CDI

Atavés de tês formas:

Injeção por atibuto.

Injeção por método set.

Injeção por constutor.

DE QUE MANEIRA ÉREALIZADA A INJEÇÃO?

Page 17: CDI -Contextos e Dependências

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

FUNCIONALIDADES

Page 18: CDI -Contextos e Dependências

CDI Fabrica de objetos customizados.

@Produces, @Disposes, InjectonPoint

Eventos.

@Event, @Observes

Interceptadores/Decoradores.

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

FUNCIONALIDADES

Page 19: CDI -Contextos e Dependências

CDIECOSSISTEMA

Page 20: CDI -Contextos e Dependências

CDI

Weld – implementação de referência (JBoss).

CanDI (Caucho).

OpenWebBeans (Apache).

IMPLEMENTAÇÕES

Page 21: CDI -Contextos e Dependências

CDI

Implementaçã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.

Weld

Page 22: CDI -Contextos e Dependências

CDIRelação entre CDI, Weld e Seam 3

Page 23: CDI -Contextos e Dependências

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.

CanDI

Page 24: CDI -Contextos e Dependências

CDICanDI e Resin

Page 25: CDI -Contextos e Dependências

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.

OpenWebBeans

Page 26: CDI -Contextos e Dependências

CDIOpenWebBeans e Geronimo

Page 27: CDI -Contextos e Dependências

CDIServidores de AplicaçõesJava EE 6

Page 28: CDI -Contextos e Dependências

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.

GlassFish v3

Page 29: CDI -Contextos e Dependências

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.

JBoss AS 6

Page 30: CDI -Contextos e Dependências

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.

Resin 4

Page 31: CDI -Contextos e Dependências

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.

Geronimo 3

Page 32: CDI -Contextos e Dependências

Cade os Exemplos ??

Page 33: CDI -Contextos e Dependências

CDIExemplo @Named

Page 34: CDI -Contextos e Dependências

CDIExemplo @NamedJSF

Page 35: CDI -Contextos e Dependências

CDIExemplo @NamedBrowse

Page 36: CDI -Contextos e Dependências

CDIExemplo @NamedBrowse

Page 37: CDI -Contextos e Dependências

Só isso de exemplo ??

Page 38: CDI -Contextos e Dependências

CDIExemplo Controller

Page 39: CDI -Contextos e Dependências

CDIExemplo Caixa Eletrônico

Page 40: CDI -Contextos e Dependências

CDIExemplo Saldo InicialSem @Inject

Page 41: CDI -Contextos e Dependências

CDIExemplo ClasseMovimentação

Page 42: CDI -Contextos e Dependências

CDIExemplo CriaçãoStereotype

Page 43: CDI -Contextos e Dependências

CDIExemplo JSFConta Bancária

Page 44: CDI -Contextos e Dependências

CDIExemplo Tela semProduces

Page 45: CDI -Contextos e Dependências

CDIExemplo Injeção UtilizandoProduces

Page 46: CDI -Contextos e Dependências

CDIExemplo CriandoProduces

Page 47: CDI -Contextos e Dependências

CDIExemplo Tela comProduces

Page 48: CDI -Contextos e Dependências

CDIExemplo Tela Sacando

Page 49: CDI -Contextos e Dependências

CDIExemplo Interceptor

Page 50: CDI -Contextos e Dependências

CDIExemplo XMLInterceptor

Page 51: CDI -Contextos e Dependências

CDIExemplo ControllerQualifier Padrão

Page 52: CDI -Contextos e Dependências

CDIExemplo InterfaceRepository

Page 53: CDI -Contextos e Dependências

CDIExemplo QualifierPadrão

Page 54: CDI -Contextos e Dependências

CDIExemplo JSFQualifier

Page 55: CDI -Contextos e Dependências

CDIExemplo TelaQualifier

Page 56: CDI -Contextos e Dependências

CDIExemplo Controller UsandoQualifier Específico

Page 57: CDI -Contextos e Dependências

CDIExemplo QualifierEspecífico

Page 58: CDI -Contextos e Dependências

CDIExemplo Qualifier EspecíficoSem Anotação

Page 59: CDI -Contextos e Dependências

CDIExemplo Qualifier EspecíficoCom Anotação

Page 60: CDI -Contextos e Dependências

CDIExemplo QualifierEspecífico

Page 61: CDI -Contextos e Dependências

CDIExemplo XML

Page 62: CDI -Contextos e Dependências

CDIExemplo Tela QualifierEspecífico

Page 63: CDI -Contextos e Dependências

CDIExemplo Alternatives

Page 64: CDI -Contextos e Dependências

CDIExemplo InterfaceAlternatives

Page 65: CDI -Contextos e Dependências

CDIExemplo MensagemAlternatives Padrão

Page 66: CDI -Contextos e Dependências

CDIExemplo JSFAlternatives

Page 67: CDI -Contextos e Dependências

CDIExemplo XML SemAlternatives

Page 68: CDI -Contextos e Dependências

CDIExemplo TelaAlternatives

Page 69: CDI -Contextos e Dependências

CDIExemplo MensagemAlternatives

Page 70: CDI -Contextos e Dependências

CDIExemplo XML comAlternatives

Page 71: CDI -Contextos e Dependências

CDIExemplo Tela UtilizandoImplementação Alternatives

Page 72: CDI -Contextos e Dependências

Quero saber da Conversaton ??

Page 73: CDI -Contextos e Dependências

CDIExemplo Controller UsandoConversationScoped

Page 74: CDI -Contextos e Dependências

CDIExemplo JSPConversationScoped

Page 75: CDI -Contextos e Dependências

CDIExemplo Tela InicialConversationScoped

Page 76: CDI -Contextos e Dependências

CDIExemplo Utilizando Tela semConversationScoped

Page 77: CDI -Contextos e Dependências

CDIExemplo Utilizando Tela sem ConversationScoped

Page 78: CDI -Contextos e Dependências

CDIExemplo Tela IniciandoConversationScoped

Page 79: CDI -Contextos e Dependências

CDIExemplo Utilizando Tela com ConversationScoped

Page 80: CDI -Contextos e Dependências

CDIExemplo Utilizando Tela com ConversationScoped

Page 81: CDI -Contextos e Dependências

Obrigado