2. Globalcode
–
Open4education
Agenda
! Injeção Dependência (IoC)
! IoC no Java EE 5
! CDI
! Objetivo
! Managed Beans
! Principais Recursos
! Demo
! Sumário
! Perguntas e Respostas
3. Globalcode
–
Open4education
Injeção Dependência (IoC)
! Mecanismo de “injeção” de recursos necessários a
um componente de forma automática
! Sem a presença de instruções explícitas para acessar o
recurso
! Exemplo:
! O componente de negócios A depende do componente
de negócios B e do pool de conexões C.
A
B
C
4. Globalcode
–
Open4education
Injeção Dependência (IoC)
! Sem injeção de dependência
! Código fonte do componente A contém instruções para
“buscar” o componente B e o recurso C
A
B
C
Serviço de Nomes
“ejb/componenteB”
“jdbc/dataSourceC”
lookups
5. Globalcode
–
Open4education
Injeção Dependência (IoC)
class ComponenteA {
@EJB(name=“ejb/componenteB”) InterfaceB b;
@Resource(name=“jdbc/dataSourceC”) DataSource c;
}
A
B
C
Serviço de Nomes
“ejb/componenteB”
“jdbc/dataSourceC”
injeção
7. Globalcode
–
Open4education
IoC no Java EE 5
! Limitações
! Mecanismo muito básico de IoC
! Não suporta a injeção de POJOs
! Somente componentes Java EE
! Não suporta customização
! Não tem tipagem definida
! Lista limitada de anotações
! @EJB
! @PersistenceContext, @PersistenceUnit
! @Resource
11. Globalcode
–
Open4education
CDI (JSR-299)
! CDI = Context Dependency Injection
! Novo modelo para gerenciamento de beans e
injeção de dependência
! Nova definição para escopos de aplicação
! Também conhecido como “Web Beans”
! Integra as camadas web e negócio da aplicação
! Facilita a implementação das aplicações que utilizam
tecnologias como JSF e EJB (Java EE)
12. Globalcode
–
Open4education
CDI (JSR-299)
! Gerenciamento de ciclo de vida de componentes
statefull
! Provê um mecanismo de DI typesafe
! Disponibiliza mecanismo de eventos facilitando o
desenvolvimento com baixo acoplamento
! Tem um mecanismo de Interceptors e Decorators
! Possibilita a criação de extensões portáveis para
qualquer implementação
! Integração com EL
14. Globalcode
–
Open4education
CDI Managed Beans
! Nova definição para
“beans
! Instâncias são
gerenciadas pelo
container
! Serviços disponíveis
! Injeção de Dependência
! Ciclo de vida
! Interceptors
! Events
26. Globalcode
–
Open4education
Scopes and Contexts
! Define um modelo de escopos extensível
! Escopo dependente - @Dependent
! Escopo padrão de todas classes
! Significa que o objeto “injetado” encontra-se no mesmo
escopo e tem o mesmo ciclo de vida do objeto cliente
! Outros escopos disponíveis
! @ApplicationScoped
! @RequestScoped
! @SessionScoped
! @ConversationScoped
! Request <= Conversation <= Session
33. Globalcode
–
Open4education
Implementações
! Weld / Seam
! Implementação de referência (RI)
! Incluída no JBoss AS e Glassfish
! Utilizado como base para Seam 3
! Extensões para Spring, Drools, jBPM, JBoss ESB, GWT
! CanDI
! Caucho (Resin)
! Extensões para iBATIS, Struts 2, Wicket, Quartz, JMS, JDBC
! OpenWebBeans
! Apache (Geronimo)
! Integra com OpenEJB e funciona no Tomcat
34. Globalcode
–
Open4education
Sumário
! Java EE 6 é mais “enxuto” e mais produtivo
! CDI (JSR-299) fornece uma lista de serviços
! Integração JSF com EJB
! Desacoplamento com forte tipagem
! Modelo de eventos
! Integração com Interceptors
! API extensível para implementação customizada