DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


CDI – Contextos e Dependências – Parte 2 - Java Magazine 85

Trata do CDI – Contexts and Dependency Injection for the JavaTM Platform –, padrão publicado na JSR 299 em dezembro de 2009 como parte do Java EE 6 e, portanto, disponível para utilização por qualquer servidor Web ou servidor de aplicação Java EE 6, como por exemplo o GlassFish 3. Esta segunda e última parte da série de artigos discute sobre contextos e apresenta as seguintes funcionalidades: alternativas, interceptadores, decoradores e eventos.






CDI – Contextos e Dependências
Injeção de dependências e contextos no Java EE 6 – Parte 2
Segunda e última parte de um artigo que aprofunda nos conceitos do CDI, padrão Java EE 6 para injeção de dependências e definição de componentes em contextos

De que se trata o artigo:
Trata do CDI – Contexts and Dependency Injection for the JavaTM Platform –, padrão publicado na JSR 299 em dezembro de 2009 como parte do Java EE 6 e, portanto, disponível para utilização por qualquer servidor Web ou servidor de aplicação Java EE 6, como por exemplo o GlassFish 3. Esta segunda e última parte da série de artigos discute sobre contextos e apresenta as seguintes funcionalidades: alternativas, interceptadores, decoradores e eventos.
Para que serve:
Como já apresentado na primeira parte do artigo, o CDI realiza injeção de dependências entre classes de uma aplicação Java EE 6 e permite, ainda, que páginas JSF e JSP façam referência a estas classes por meio da EL (linguagem de expressões unificada). As classes gerenciadas pelo CDI, as quais chamamos de beans, são associadas a determinados contextos para gerenciamento automático do seu ciclo de vida. O CDI oferece, além disso, uma série de funcionalidades como qualificadores, alternativas, decoradores, interceptadores e eventos que permitem uma grande flexibilidade no desenvolvimento da aplicação.
Em que situação o tema é útil:
Qualquer sistema desenvolvido na plataforma Java EE 6, seja no perfil Web, seja utilizando EJBs, pode utilizar CDI, diminuindo consideravelmente a quantidade de código de infraestrutura que deve ser escrito pelo programador para gerenciar dependência entre componentes. O CDI provê, também, desacoplamento entre classes, facilitando a manutenção do sistema.
CDI – Contextos e Dependências:
O CDI é o mecanismo oferecido pela plataforma Java EE 6 para gerenciamento de dependências entre componentes (chamados de beans) de uma aplicação corporativa (com ou sem o uso de EJBs), associando-o a contextos e oferecendo uma série de serviços de infraestrutura à aplicação. Na primeira parte desta série de artigos, apresentamos uma visão geral do CDI e os conceitos de fornecedores e qualificadores. Nesta segunda e última parte, explicamos que beans possuem um escopo que os associa a um determinado contexto (Listagens 1 e 2 e Figuras 1 a 3) e dedicamos especial atenção ao contexto da conversação (Listagens 3 a 8 e Figura 4), uma novidade em relação aos contextos de requisição, sessão e aplicação que já existiam na API Servlets. Além disso, mostramos ainda o “escopo” Flash, que apesar de não fazer parte do CDI enriquece a discussão sobre contextos/escopos (Listagens 9 a 13). Em seguida, apresentamos funcionalidades do CDI que giram em torno da injeção de dependências em contextos: alternativas permitem a especificação da classe que implementa o bean em configuração XML (Listagens 14 a 18); interceptadores e decoradores implementam os mecanismos homônimos já bastante conhecidos e documentados em padrões de projeto (Listagens 19 a 24); e um mecanismo de eventos que permite a utilização do paradigma orientado a eventos em aplicações Java EE (Listagens 25 a 27).
Na Edição anterior da Java Magazine publicamos a primeira parte desta série de artigos sobre o CDI – “Contexts and Dependency Injection for the JavaTM EE Platform” (“Contextos e Injeção de Dependências para a plataforma JavaTM EE”). Em resumo, explicamos que o CDI:
•    Foi proposto pela JSR 299, cuja versão final aprovada pelo JCP foi publicada em dezembro de 2009 e incluída na plataforma Java EE 6 para desenvolvimento de aplicações corporativas;
•    Permite que declaremos uma dependência de uma classe do sistema (chamada de bean) a um EJB utilizando a anotação @EJB ou a uma classe não-EJB utilizando @Inject, ambos sobre o atributo que representa a associação entre o dependente e sua dependência;
•    Provê acesso via linguagem de expressões unificada (Expression Language, ou EL) a beans que utilizarem a anotação @Named na definição da classe. Tal anotação permite definir um nome para o componente ou utilizar o nome default: o mesmo nome da classe, trocando a primeira letra para minúscula;
•    Traz consigo alguns estereótipos que representam papéis desempenhados por determinados componentes em arquiteturas comuns e padrões de projeto, como o @Model, que representa o modelo em uma arquitetura MVC. Possibilita, ainda, que o desenvolvedor crie seus próprios estereótipos;
•    Permite que o desenvolvedor declare métodos ou atributos fornecedores para o provimento de dependências de classes que não foram desenvolvidas no sistema (ex.: uma instância de java.util.List) ou que necessitam de processamento especial;
"


ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    3 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Patrick Maciel
Como faço para tirar proveito do escopo de view do JSF 2 e o CDI juntos. Pergunto, pois, não vi nenhuma anotação relacionada ao escopo de view em javax.enterprise.context.

Obrigado!
[há +1 ano] - Responder

 

Dyego Souza Do Carmo
Isto não é possivel , mas o CDI tem todos os escopos que o JSF 2.0 tem :)
[há +1 ano] - Responder
 

Devmedia - Equipe De Moderação
RESPOSTA DO AUTOR
Caro Patrick,

A anotação @ViewScoped existe só na API do JSF, pois o CDI é independente da tecnologia utilizada para a interface gráfica com o usuário. O conceito de "view" existe só quando se considera esta tecnologia, por exemplo no JSF.

Você pode também acessar o mapa referente ao escopo de View desta forma: UIViewRoot.getViewMap() e nas páginas JSF você pode usar o objeto implícito #{viewScope} para acessar as informações deste mapa.

Espero que ajude,
Vítor Souza
[há +1 ano] - Responder
 



Publicidade
Autor
Vítor Estêvão Silva Souza

Graduação em Ciência da Computação e Mestrado em Informática com ênfase em Engenharia de Software na Universidade Federal do Espírito Santo (UFES), onde trabalhou também como professor substituto.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03