Este é um post disponível para assinantes MVPEste 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.
Java Magazine 85
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Java Magazine 85
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Java Magazine 85
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
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 MVPEste 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
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
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
Artigo Clube Delphi 110 - POO – Crie sistemas flexíveis, expansíveis e com baixo custo de manutenção
Artigo Engenharia de Software 6 - Utilizando Visualização de Informação para Compreensão de Software
Artigo SQL Magazine 23 - Influenciando o otimizador de consulta baseado em custo do Oracle - Parte 3
Artigo SQL Magazine 20 - Influenciando o otimizador de consulta baseadoem custo do Oracle - Parte II
Artigo Webmobile 8- Bluecove: Comunicando aplicativos J2SE com aplicativos J2ME através de Bluetooth
Você está em:
canal Java
Publicidade
Vítor Estêvão Silva Souza
Space do autor
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


0
0
