Como obter objeto criado pelo Spring em uma classe "normal" que não seja um Servlet
12 respostas
davidbuzatto
Olá!
Estou usando o Spring em uma aplicação que irá ser integrada com o Flex e estou utilizando o OpenAMF para fazer a ponte entre o Flex e o Java. Estou iniciando a implementação dos serviços do OpenAMF e gostaria de saber como acessar o meu Dao criado pelo Spring dentro dessa classe de serviço.
ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(
getServletContext() );
Dao dao =
( HibernateClienteDao) context.getBean( "dao" );
No serviço:
publicclassUsuarioAdministradorService{publicvoidsalvar(Stringlogin,Stringsenha)throwsException{UsuarioAdministradoru=newUsuarioAdministrador();u.setLogin(login);u.setSenha(senha);// como obter o DAO???Daodao=?;dao.getHibernateTemplate().saveOrUpdate(u);}}
Como que eu posso obter o meu objeto "dao" em uma classe normal?
vc não pode obter a service no servlet e injetar direto o dao na service ?
LucianoM86
o que o ronybrand disse é o mais correto, mas se precisar mesmo acessar pode fazer assim
ApplicationContext context = new ClassPathXmlApplicationContext("/WEB-INF/applicationContext.xml");
davidbuzatto
Mas eu vou ter que manter um servlet só para isso???
Eu quero ter acesso direto aos objetos criados pelo Spring, não tem como fazer isso?
Tenho isso aqui (abaixo) em uma classe de teste, mas toda vez que é executada ela carrega as configurações do Spring, e se eu fizer isso no meu serviço vai ficar pesado concordam? Eu posso obter o BeanFactory apenas uma vez e deixar ele vivo na aplicação como um membro static? Isso está me cheirando a gambiarra...
Resource configuration = new ClassPathResource("/applicationContext.xml");BeanFactory factory = new XmlBeanFactory( configuration );Dao d = ( Dao ) factory.getBean( "dao" );
joaosouza
Olá davidbuzatto, blz…
Vc pode criar uma classe utilitária, masi ou menos assim…