I’m using Ajaxtags to implement an ajax-enabled form with dynamic dropdown fields. In order to access my DAO object (which is a Spring managed bean) to get the dropdown options, I had to have access to the Application context from a regular Servlet.
The solution is very simple, but since I had some troubles finding it, I’m adding it here for future reference, and for anyone who’s looking for the same. Basically, you use the WebApplicationContextUtils object from the spring framework to get a reference to your bean. Inside the doGet() method I have:
ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
Object myDao = context.getBean("daoBeanName");
It’s that easy… really.
You do not have to use a servlet, you can use you framework action to return the result. We included the servlet as an example but in the release there is an abstract struts action an the same can be done with Spring.
That was helpful, thanks for sharing!
thanks, just what i needed.
Great post exactly what I needed; ironically you are doing exactly what I am working on doing.
Accediendo a un bean Spring desde un servlet.
Una buena solucion dificil de encontrar en la web.
Great!!, thank you
This is exactly what’s missing in Spring Tutorial, "Developing a Spring Framework MVC application step-by-ste".
justo lo que necesitaba, thank you
That was really helpful
Thanks! Saved my day.
As the others, just what I needed 😀
howto put the value back on the spring bean?
Is there a way to make my servlet a bean? I can’t use MVC because in my servlet I need to send data back piece by piece. Thx
Works great, thanks!
Thanks a lot …….it helped 🙂
If I’m not mistaken new instance will be created when you say context.getBean(“daoBeanName”);
This means, this is stateless (prototype). Please correct me is I’m wrong. If this is true how do we create a singleton instance?
Re: singleton bean. See http://static.springsource.org/spring/docs/1.2.9/reference/beans.html#beans-factory-modes
this information is very useful to apply it in my project. keep posting such info.
The only suggestion I have is moving the code from doGet() to init()
It will not work in the init-method, as the WebApplicationContext will always be null there.