Tips
Guillermo Castro  

Accessing a Spring bean from a servlet

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.

20 thoughts on “Accessing a Spring bean from a servlet

  1. paticubita

    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.

  2. jorge

    That was helpful, thanks for sharing!

  3. Anonymous

    thanks, just what i needed.

  4. SpoonS

    Great post exactly what I needed; ironically you are doing exactly what I am working on doing.

  5. Carlos

    Accediendo a un bean Spring desde un servlet.
    Una buena solucion dificil de encontrar en la web.
    Great!!, thank you

  6. Anonymous

    This is exactly what’s missing in Spring Tutorial, "Developing a Spring Framework MVC application step-by-ste".

    Cool stuff.

    Jiryih Tsaur

  7. alejo

    justo lo que necesitaba, thank you

  8. Neelam

    That was really helpful
    Thanks

  9. curt

    Thanks!  Saved my day.

  10. fferric

    Great tip!
    As the others, just what I needed 😀
    Thanks!

  11. Anonymous

    howto put the value back on the spring bean?

  12. Rusty

    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

  13. Hammer_Time

    Works great, thanks!

  14. Anonymous

    Thanks!

  15. Anonymous

    Thanks a lot …….it helped 🙂

  16. Nirwana

    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?

  17. Ashley Walton

    Re: singleton bean. See http://static.springsource.org/spring/docs/1.2.9/reference/beans.html#beans-factory-modes

  18. Anonymous

    this information is very useful to apply it in my project. keep posting such info.

  19. Anonymous

    Great example!

    The only suggestion I have is moving the code from doGet() to init() 

  20. Anonymous

    It will not work in the init-method, as the WebApplicationContext will always be null there.

Leave a Reply