• Save
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
Upcoming SlideShare
Loading in...5
×
 

TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6

on

  • 1,518 views

Palestra que explorou os recursos de extensibilidade da API de CDI (Contexts & Dependency Injection) do Java EE 6 e foi realizada no The Developers Conference 2012 em São Paulo para a trilha de ...

Palestra que explorou os recursos de extensibilidade da API de CDI (Contexts & Dependency Injection) do Java EE 6 e foi realizada no The Developers Conference 2012 em São Paulo para a trilha de Java EE.

Resumo: "Dentre todas as APIs que compõem a especificação da plataforma Java EE 6, a API de Contextos e Injeção de Dependência (Contexts and Dependency Injection), ou simplesmente CDI, é a grande novidade que não existia nas versões anteriores desta plataforma. Esta API adiciona um suporte ao conceito de "Injeção de Dependências" como uma ferramenta de modelagem. Contudo, esta API suporta um conjunto de pontos de extensão que permitem uma aplicação adicionar novas funcionalidades na plataforma ou mudar o comportamento padrão definido pela especificação. Esta apresentação irá explorar recursos de extensibilidade do CDI para um uso avançado ao criar componentes numa aplicação enterprise baseados em CDI beans integrados à plataforma."

Statistics

Views

Total Views
1,518
Views on SlideShare
1,512
Embed Views
6

Actions

Likes
2
Downloads
0
Comments
0

3 Embeds 6

http://www.linkedin.com 3
https://si0.twimg.com 2
https://twimg0-a.akamaihd.net 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6 TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6 Presentation Transcript

    • Contexts & Dependency Injection (CDI) Usando os recursos de extensibilidade da API de CDI do Java EE 6 Dr. Spock @drspockbr
    • @bout me!• Bacharel e especialista em Física pela UFV e Unicamp;• Desenvolvedor de aplicações Web desde 96 e Java desde 99;• Palestrante nos principais eventos nacionais e internacionais;• Integrante da equipe de desenvolvimento da Vocado LLC
    • Agenda• Introdução• Principais recursos• CDI Portable Extensions• Q&A
    • Introdução
    • O que é CDI?
    • “Contexts and Dependency Injection(CDI) é a especificação da plataforma Java EE que adiciona os conceitos de injeção de dependência e contextosaos componentes de negócios de uma aplicação corporativa.”
    • Características• Type-safe;• Orientado a anotações;• Consistente;• Portável;• Turbina o modelo de componentes do Java EE.
    • Origens do CDI
    • Origens do CDIJSR-299 JSR-330Web Beans Dependency Injection for Java
    • Origens do CDI JSR-299 JSR-330Contexts and Dependency Injection Dependency Injection for Java EE for Java
    • Origens do CDI JSR-299 JSR-330Contexts and Dependency Injection Dependency Injection for Java EE for Java
    • Implementaçãode Referência
    • CDI no Java EE 6
    • CDI no Java EE 6
    • Principais Recursos
    • Principais Recursos• Managed Bean• Injection• Contexts• Qualifiers• Events• Alternatives
    • Principais Recursos• Specializations• Stereotypes• Interceptors• Decorators• Producers/Disposers• Portable Extensions (SPI)
    • Development Time vs Runtime
    • Injeção de Dependência (Development Time) @Inject• @javax.inject.Inject private ICaixaEletronico cxEletronico;• Baseado no tipo do atributo ou parâmetro• Injeta ocorrência única do tipo• Instancia a partir do construtor sem parâmetros
    • Producers (Development Time) @Produces • Criação customizada de beans; @BankRepository @PersistenceContext private EntityManager em; • Qualificador ajuda a ter múltiplos gerenciadores: @Produces @BankRepository Ex.: @BankRepository @Resource private DataSource ds;public class ProdutoDAO { public class StoredProcedureBean { @Inject @Inject @BankRepository @BankRepository private EntityManager manager; private DataSource ds;} }
    • Producers (Development Time) @Produces• Criação customizada de beans; @BankRepository @PersistenceContext private EntityManager em;• Qualificador ajuda a ter múltiplos gerenciadores: @Produces @BankRepository Ex.: @BankRepository @Resource private DataSource ds; public void close(@Disposes EntityManager em) { em.close(); }
    • Producers (Runtime)• Criação customizada de beans;• Necessário um qualificador: Ex.: @Customizado @Inject @Customizado private ICaixaEletronico cxEletronico; @Producer @Customizado public ICaixaEletronico criarCaixaEletronicoCustomizado() { TDCBankCaixaEletronico e = new TDCBankCaixaEletronico(...); // customiza o caixa eletrônico return e; }
    • Producers (Runtime)• Criação customizada de objectos IStoredProcedure: @Inject @StoredProcedure(name = ”PROC_01”, repository = @BankRepository) @Customizado private IStoredProcedure procedure; @Produces @Customizado public IStoredProcedure criarProcedure(InjectionPoint p) { // Obtem dados da anotação via objeto p. IStoredProcedure procedure = ... ; return procedure; }
    • Producers (Runtime)• Obtem EntityManager de acordo anotação; @Inject @StoredProcedure(name = ”PROC_01”, repository = @BankRepository) @Customizado private IStoredProcedure procedure;@Inject@Anyprivate Instance<EntityManager> managerResolver;public IStoredProcedure criarProcedure(InjectionPoint p) { // Obtem dados da anotação via objeto p. Annotation repositoryAnnotation = ... ; EntityManager em = managerResolver.select(repositoryAnnotation); IStoredProcedure procedure = ... ; return procedure;}
    • Portable Extensions (SPI)
    • Portable Extentions (SPI)• Funcionalidades para runtime;• Permite registrar: • Beans customizados • Escopos customizados • Interceptors • Decorators • Stereotypes
    • Portable Extentions (SPI)• Busca programática de beans;• Injetar CDI beans em objetos próprios;• Adicionar ou sobrescrever meta-anotações
    • Partes do SPI
    • Meta-Interfaces• javax.enterprise.inject.spi • Decorator<T>• Extension • Producer<T>• InjectionPoint • ObserverMethod<T>• Bean<T> • AnnotatedType<T>• InjectionTarget<T> • AnnotatedMethod<T>• Interceptor<T> • Instance<T>
    • SPI Events• BeforeBeanDiscovery • ProcessBean• AfterBeanDiscovery • ProcessObserverMethod• BeforeShutdown • AfterDeploymentValidat ion• ProcessAnnotatedType• ProcessInjectionType public void tratadorEvento( @Observes BeforeShutdown event) { // Lógica para processar evento.• ProcessProducer };
    • BeanManager• Permite interagir diretamente com o CDI @Inject private BeanManager beanManager;
    • Criando um Extension• Não é exatamente um CDI bean;• Criado durante o processo de inicialização, antes de qualquer bean ou contexto existir; public class MinhaExtensao implements Extension { // tratadores de eventos SPI.• Registrado em: }; META-INF/services/ javax.enterprise.inject.spi.Extension
    • Exemplo de Extensões
    • Exemplo de Extensões http://openwebbeans.apache.org
    • Perguntas
    • Obrigado!• Contato: Dr. Spock tdc2012@spock.com.br• Twitter: @drspockbr• About me: http://about.me/drspockbr• Slides: http://slideshare.net/drspockbr