4. Aplicações Java STI
● Nossas aplicações Web são compostas por:
○ JSF como front-end
○ Spring como controlador de serviços e transações
○ Hibernate como ORM
7. IOC - Inversion Of Control
● O fluxo de controle
da aplicação é da
biblioteca e não ao
programador
● Uma biblioteca
deste tipo pode ser
considerado um
framework
Exemplo:
Jogo extends JogoFramework{
@Override
public void update(){
….
}
@Override
public void draw(){
….
}
}
8. DI - Dependency Injection
O programador não deve se preocupar em
criar a estrutura da aplicação, cabendo ao
framework construí-la usando arquivos de
configuração (XML) ou anotações
Exemplo:
class pessoa{
@Inject List<Objetos> listObjetos;
}
13. DI - Tempo de Vida
“Quanto tempo” vive um objeto no container?
● Sempre é criado um novo;
● Enquanto existe uma criação no banco;
● Durante toda a aplicação;
● Enquanto meu personagem está no mesmo
cenário;
14. DI - Exemplos
● O CDI é a especificação de DI de java
definida pelas JSR-299 e JSR-330
Implementação Foco Limitações
Spring Framework Web
com DI
● Não implementa totalmente o CDI
● Containers de Aplicação não o
suportam nativamente
● Pode ser muita coisa para quem só
deseja usar DI
Guice Somente DI ● Containers de Aplicação não o
suportam
● Pode ser pouca coisa se você quer
algo além de DI
Weld Implementação
de referência
CDI
● Quase ninguém usa
16. O que é JSF?
Framework stateful e orientado a
componentes para camadas view e controller
de aplicações web
17. Vantagens/Desvantagens
● Poderoso
● Flexível
● Abstração das
tecnologias web
● Facilidade em criar
ferramentas
● Biblioteca de
componentes
● Suporta acessibilidade,
internalização e
multilinguística
● Padrão definido na
industria
● Complexo e as vezes
desnecessário
● Padrão diferente dos
frameworks por ação
(Rails, Struts, …)
● Não aproveita REST
do HTTP
● Somente a versão 1.2
foi estável.
● Por ser stateful, é mais
lento e consome mais
memória
Des-mytifying Java ServeFaces - Ed Burns
18. Vantagens/Desvantagens
● “Simula” uma
aplicação desktop,
onde existe estado da
View
● Componentes prontos.
Se não há necessidade
de customização. O
desenvolvimento é
acelerado
● Pode ter problemas de
desempenho ao
manter o estado da
View
● Dificuldade de
customização de
componentes
25. Spring
“Spring Framework is a Java platform that
provides comprehensive infrastructure support
for developing Java applications. Spring
handles the infrastructure so you can focus on
your application.”
http://docs.spring.io/spring/docs/3.0.x/reference/overview.html
27. Spring - Bean
Bean no Spring é um POJO que é carregado
no contexto de aplicação do Spring (container
DI) e terá seu ciclo de vida gerenciado de
acordo com um scopo determinado
● singleton – Return a single bean instance per Spring IoC container
● prototype – Return a new bean instance each time when requested
● request – Return a single bean instance per HTTP request. *
● session – Return a single bean instance per HTTP session. *
● globalSession – Return a single bean instance per global HTTP session. *
28. Spring - Transaction
O Spring abstrai o conceito de transação
permitindo definir métodos transacionais com a
anotação @Transactional
@Transactional
public void doSomething(){
…
}