Spring - Obtenção de instâncias  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
Tchello
GUJ Master
[Avatar]

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!
peerless
GUJ Master
[Avatar]

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





[MSN]
Tchello
GUJ Master
[Avatar]

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
peerless
GUJ Master
[Avatar]

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





[MSN]
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team