| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/09/2011 13:16:14
|
Tchello
GUJ Master
![[Avatar]](/images/avatar/901db33c84e81b1a30e59949bbcb112b.png)
Membro desde: 07/06/2008 14:41:04
Mensagens: 1695
Offline
|
Boa tarde pessoal.
Nunca tinha mexido com Spring antes, portanto penei um pouco pra conseguir fazer as configurações necessárias.
Enfim, preciso fazer algumas coisas com spring - hibernate e para isso foi criado uma interface CountryDAO e uma implementação CountryHibernateDAO que também herda HibernateDaoSupport.
Preciso usar esse DAO em uma classe que não é gerenciada pelo spring mas quero que o dao o seja.
Para tanto fiz a configuração necessária do sessionFactory, datasource, etc no applicationContext inclusive a seguinte para que ele encontre a implementação do DAO:
Bom, na minha classe normal que não é geranciada pelo spring como faço pra obter uma instância desse DAO?
Alguém tem alguma luz? To tentando de tudo e não acho nada no google, aliás, acho coisa pra k* mas é muita informação desencontrada etc e tal...
Só preciso saber disso por enquanto.
Obrigado!
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/09/2011 14:19:23
|
peerless
GUJ Master
![[Avatar]](/images/avatar/5b2a8f2b014bb326fd82ee313704e78c.jpg)
Membro desde: 22/01/2007 14:52:26
Mensagens: 1391
Localização: Porto Alegre / RS
Offline
|
Esta aplicação é WEB? Se sim, está usando algum framework? Normalmente o Spring possui integração com vários frameworks WEB - ie. carregam o contexto do Spring na inicialização da aplicação (tecnicamente falando, ele faz as injeções na hora que o framework instancia os controllers).
Caso não, tu precisa antes de mais nada definir o endpoint das suas injeções, ou seja.. a ultima camada que receberá injeção. Em sistemas multi-layers, a ultima camada normalmente é o controller. Algo como:
neste caso, tu pode ter algo proximo a isso no Spring:
Isso significa que, ao recuperar uma instancia do Service, o dao será injetado automaticamente no mesmo.
Eu uso esta classe aqui para instanciar o container, digamos, stand-alone.
Com isso, lá no controller tu podes fazer:
E lembre-se, isso (IoC/DI) tem mais sentido se trabalhar pensando em interfaces.
abraço.
This message was edited 1 time. Last update was at 14/09/2011 14:21:04
|
follow me
pitacos
"The most problems that teams face are about communication, and all the others are too." - Dan North
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/09/2011 14:29:52
|
Tchello
GUJ Master
![[Avatar]](/images/avatar/901db33c84e81b1a30e59949bbcb112b.png)
Membro desde: 07/06/2008 14:41:04
Mensagens: 1695
Offline
|
Sim, no caso estou rodando no JBoss 4.2.3.
Versão do Spring é a 2.5.
Bom, o que você disse eu meio que já sabia, mas não responde bem minha pergunta.
Isso significa que, ao recuperar uma instancia do Service, o dao será injetado automaticamente no mesmo.
É exatamente isso que quero saber, COMO recuperar uma instância do service/dao?
Depois de ter feito esse post consegui fazer usando uma estratégia como essa:
Mas fui alertado que essa não seria uma prática muito recomendada, já que pode haver alguns problemas de memory leak, etc e tal...
Ainda mais se você considerar que já configurei o meu applicationContext.xml no classpath no web.xml
Considerando isso é bastante burocrático e redundante recuperar o ApplicationContext programaticamente, não?
Não existe uma forma mais elegante?!
Estranho o pessoal do spring falar tão mal de EJB que depois da versão 3.0 é MUITO mais simples e fácil =Z
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/09/2011 14:41:37
|
peerless
GUJ Master
![[Avatar]](/images/avatar/5b2a8f2b014bb326fd82ee313704e78c.jpg)
Membro desde: 22/01/2007 14:52:26
Mensagens: 1391
Localização: Porto Alegre / RS
Offline
|
Tchello wrote: Sim, no caso estou rodando no JBoss 4.2.3.
Versão do Spring é a 2.5.
Bom, o que você disse eu meio que já sabia, mas não responde bem minha pergunta.
Isso significa que, ao recuperar uma instancia do Service, o dao será injetado automaticamente no mesmo.
É exatamente isso que quero saber, COMO recuperar uma instância do service/dao?
Depois de ter feito esse post consegui fazer usando uma estratégia como essa:
Mas fui alertado que essa não seria uma prática muito recomendada, já que pode haver alguns problemas de memory leak, etc e tal...
Ainda mais se você considerar que já configurei o meu applicationContext.xml no classpath no web.xml
Considerando isso é bastante burocrático e redundante recuperar o ApplicationContext programaticamente, não?
Não existe uma forma mais elegante?!
Estranho o pessoal do spring falar tão mal de EJB que depois da versão 3.0 é MUITO mais simples e fácil =Z
Então, vamos alinhar algumas coisas. O Seu application container é o JBoss, mas qual framework MVC tu está usando? Ou está fazendo direto com Servlets?
Sim, se for uma aplicação WEB sempre será mais elegante pegar implicitamente via listener (aqui um exemplo) - agora, que gera memory leak eu nunca vi.. tem a fonte?
E o pessoal do Spring, reclamava do EJB em suas versões antigas. O novo EJB foi baseado nas idéias do Spring.
This message was edited 1 time. Last update was at 14/09/2011 14:42:26
|
follow me
pitacos
"The most problems that teams face are about communication, and all the others are too." - Dan North
|
|
|
 |
|
|
|
|