Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
3Activity
0 of .
Results for:
No results containing your search query
P. 1
di_spring3_v00

di_spring3_v00

Ratings: (0)|Views: 214 |Likes:
Um guia para aqueles que estão começando a aprender o Spring Framework 3.0
Um guia para aqueles que estão começando a aprender o Spring Framework 3.0

More info:

Published by: Henrique Lobo Weissmann on Nov 16, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

02/02/2014

pdf

text

original

 
Guia itexto: Inje
ção de De
pend
ências co
http://devkico.itexto.com.br
 
Injeção dSpring Fra
O objetivo deste guiarelacionadas ao container de I
 
Spring Framework 3.0. O assu
 
Trata-se do n
úcleo
obrigat
ório para todos aqueles
 
Ainda mais importasignificativa a qualidade dosinteresse pelo Spring Framecontaineres como Pico, miocc
Caminhando para a Injeçã
Um projeto de softwafragilidade e imobilidade.modifica
ção nos deparamos c
rigidez
é
conseq
üência
destadesenvolvedor v
ê suas opç
imobilidade diz respeito
à di
reaproveitadas em outros projEstes tr
ês
problemas pconsiderado de alto acoplamdependentes. Por componentexternos ou internos.Para melhor entender oum software que busque t
ítul
podemos ver sua estrutura inicNa classe cliente temos
à função
buscaPorAutor 
da clnome do autor passado comousa como fonte de dados um aPor anos este sistemanecess
ário
usar alguma outraPodemos imaginar duas solu
 
problema:
 
Na classe DAOLi
buscaPorAutorNoSGBD
, que
é uma solução interessante,
incluindo uma nova fun
ção q
fun
ção de
buscaPorAutor 
.
 
Tamb
ém
podemos altno qual pud
éssemos
definirmesmo problema da solu
ção a
Imagem 1 - Nosso modelo inicial
 
Spring Framework 3
 
Dependênciasework 3
 
expor o
porqu
ê,
como usar e quais as melhornje
ção de Dependências (
 Dependency Injection,
nto pode interessar o leitor pelas seguintes raz
ões
 
do Spring Framework: sendo assim é conque des
ejem us
á
-lo ou seus derivados.te:
é um padrão de projeto que aumenta
sistemas nos quais
é aplicado.
Mesmo que o leiwork, poder
á
us
á
-lo em seus trabalhos adotanou mesmo o seu pr
óprio se for o caso.
 
de Dependências
re ruim costuma apresentar tr
ês
caracter
ística
r
ágil
 
é
aquele sistema no qual ao se intro
om efeitos inesperados em outros de seus comp
fragilidade: dada a dificuldade em se manter o
ões de atuação limitadas
(ou mesmo anulad 
ficuldade em se extrair partes do sistema que p
tos.ssuem a mesma causa: o alto acoplamento. Umento quando seus componentes internos s
ão
s devem ser entendidas classes, fontes de dadosproblema vamos usar um exemplo bastante trivi
s de livros escritos por determinado autor.
Naial.um
único método chamado
buscar()
, que faz umasse DAOLivro que encontra t
ítulos de livros
espar
âmetro
. Imaginemos por um momento querquivo texto.poder
á funcionar sem problemas
. Mas e se no fufonte de dados, digamos, um banco de dados r
ções que não usem orientação a objetos para
ro poder
íamos
criar um novo m
étodo
faria a consulta usando um banco de dados relaci
 pois
estar
íamos
aumentando a complexidade
e
, do ponto de vista das classes cliente, exercerirar a fun
ção
buscaPorAutor 
incluindo um novoual a fonte de dados a ser usada. De novo cai 
nterior.
 
om
s pr
áticas
ou DI 
) do
:
 
hecimentode forma
tor n
ão se
do outros: rigidez,uzir uma
nentes.
Asistema oas). J
á aossam ser 
sistema
éortemente
, sistemasl que ser
á
magem 1
 chamadaritos peloAOLivroturo fosseelacional?
esolver ochamado
ional. N
ão
da classea mesmapar
âmetro
r
íamos
no
 
Guia itexto: Inje
ção de De
pend
ências co
http://devkico.itexto.com.br
 
Dado que estamos lidorientada a objetos, uma solu
ç
exp
õe
um segundo modelo pr
O que é: Padrões de Pr 
 O conceito de padr
ões de projet
posteriormente adaptado para o desproblemas recorrentes na cria
ção de s
comum para todos aqueles que os apli
O que é: Padrão de Proj
O padr
ão factory fornece uma in
poss
ível implementação do padrão é
criar novas inst
âncias de objetos que
classe do sistema venha a ter depend
ê
ou interface.
Nesta nova arquitetura a clclasse FactoryDAOLivro, a sde IDAOLivro a partir do nchamar a fun
ção
criarIDA
interessantes:
 
A classe Cliente
é d
implementa
ção específica
. Sedados imagin
ável, desde que i
 
A responsabilidade pIDAOLivro fica centralizadcomplexidade do sistema.
1
O termo se consagrou na discipliGamma, Richard Helm, Ralph John
Gangue dos Quatro
(Gang of Four o
Imagem 2 - Aplicando o padrão Fact
Spring Framework 3
 
ando com a plataforma Java e esta
é
em su
ã
o mais interessante
é
adotar o padr
ão factory. A
posto para nosso sistema.
 jeto
foi cunhado por Cristopher Alexander no contexto da arquitetura ci
nvolvimento de software orientado a objeto
1
. Trata-se de solu
çõesoftware que possuem soluções padronizadas e fornecem um vocabulári
cam. Um exemplo de padr
ão de projeto é o
 Factory
, descrito neste arti
eto Factory
terface para criação de famílias de objetos correlatos ou dependentes.a que apresentamos
neste artigo: cria-se uma classe cujo
único objetiimplementem determinada interface, fazendo com que apenas umancias diretas com todas as implementações presentes de det
erminada c
sse Cliente depende agora da interface IDAOgunda respons
ável por instanciar a implementaç
ome da fonte de dados fornecida pela classe
 Livro
. A solu
ção adotada apresenta vantagen pendente apenas da interface IDAOLivro, e nã
do assim agora
é possível trabalhar 
com qualqu
 plemente a interface IDAOLivro.
 la instancia
ção de objetos que implementem
em uma
única classe, reduzindo significati
a de engenharia de software com o livro
Padrões de Proje
son e John Vlissides (os quatro autores tamb
ém são conhec
u GoF em ingl
ês)
 
 
ry
 
ess
ência
 
imagem 2
 
vil e parao em
o.
Umavo énica
lasse
ivro e da
ão correta
liente ao
 bastanteo
de umar fonte de
interfaceamente a
to
de Erichidos como a
 
Guia itexto: Inje
ção de De
pend
ências co
http://devkico.itexto.com.br
 
O que vimos no segu
inversão de dependências
cu
 Dependency Invertion Princip
 
Um m
ódulo de níve
pertencente a um n
ível inferio
 
Abstra
ções não deve
contr
ário
 Em nosso exemplo ainteressa como os t
ítulos dos l
de alguma forma para quedependia diretamente de uma i
 
na segunda, passa a dependerIDAOLivro.O segundo postulado t
 
distintas implementa
ções de I
mas sim o contr
ário. No c
seguem rigidamente as regobrigatoriedade de se implemObserve que as tr
ês car 
segundo modelo. Nosso softwem uma implementa
ção esp
classe
Cliente
. Como conseqrigidez) e, ainda mais interesscom maior facilidade elementMas este modelo aindacoplamento da classe
Client 
classe
 DAOLivro
, no segundode apresentar uma terceira ver
 
A mudan
ça foi
sutil: aclasse
Cliente
do tipo
 IDAOCliente
3
. Agora podemos dizesta classe.Por
ém, por mais que
racioc
ínio sempre nos depar 
classe
 FactoryDAOLivro
, qpresentes no sistema da interevolua chegaremos a um mo
2
Este bel
íssimo artig
http://www.objectmentor.com/publi
3
Poder
íamos
tamb
ém ter criado u
Imagem 3 - Terceira versão do nosso m
Spring Framework 3
 
ndo modelo
é na realidade a aplicação do pri
nhado por Robert C. Martin em 1996 no seu
le
2
. Este princ
ípio
nos diz duas coisas:
mais
alto jamais deve depender diretamente
, mas sim de uma abstração.
 
m depender de detalhes de implementação,
classe
Cliente
 
é um módulo de nível superioivros são obtidos, mas sim que os mesmos sejam
ossa concluir o seu trabalho. No primeiro moimplementa
ção específica (o arquivo no formato t
apenas de uma abstra
ção que, no caso, é a noss
mb
ém foi respeitado no segundo modelo. ObseAOLivro não influenciam de forma alguma estaso, todas as implementações específicas de I
ras definidas pela interface que, no caso, tntar a fun
ção
buscaPorAutor 
.
cterí
sticas presentes em um design ruim n
ão se a
are n
ão é mais frágil, pois caso seja feita qualquecífica da interface
 IDAOLivro
n
ão afetará direência
, o sistema agora
é mais fácil de ser manti
nte: obtivemos mobilidade, pois podemos agora ts do nosso sistema para outros projetos.a est
á longe do idea
l, porque aumentamos. Enquanto na primeira vers
ão sua única depend
inclu
ímos
outra que
é a classe
 FactoryIDAOLiv
s
ão do sistema, cuja ar 
quitetura
é exposta na
ima
enas explicitamos a presen
ça de um
atributo
ivro
, cuja inst
ância é definida pelo construtor 
r que atingimos o menor grau de acoplamento po
 os esforcemos, se continuarmos seguindo estremos com problemas de acoplamento. Basta
e possui como depend
ência tod
as as imple
 
face
 IDAOLivro
.
É quase certo que conforme es
mento no qual a classe
 FactoryDAOLivro
se t
 
o encontra
-se acess
ível gratuitamente no
ations/dip.pdf 
setter para este atributo, porém o efeito seria o mesmo.
 
odelo
 
ncípio de
rtigo
The
de outro
as sim o: não
lhe
etornados
delo, esta
extual
). J
áinterfaceve que asi
nterface,
AOLivro
ata-se da
 plicam noalteraçãotamente ao (não há
ransportargrau de
ncia era a
ro
.
É hora
em 3
.
oLivro
na
da classe
s
ível paralinha de bservar a
menta
çõeste sistema
rnar
á um
endereço

Activity (3)

You've already reviewed this. Edit your review.
1 thousand reads
1 hundred reads
hypnnus liked this

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->