servlet 使用spring管理bean

servlet 使用spring管理bean

要serlvet使用注解的形式去注入bean,那么如何才能将spring管理的bean注入到servlet中。原本spring管理的bean和servlet不在一个上下文环境中是无法相互注入的。

解决办法创建一个AbstractServlet 抽象类,让你的所有servlet继承于此类

Java代码 收藏代码
  1. importjava.io.IOException;
  2. importjavax.servlet.ServletConfig;
  3. importjavax.servlet.ServletException;
  4. importjavax.servlet.http.HttpServlet;
  5. importjavax.servlet.http.HttpServletRequest;
  6. importjavax.servlet.http.HttpServletResponse;
  7. importorg.springframework.web.context.support.SpringBeanAutowiringSupport;
  8. /**
  9. *ServletimplementationclassAbstractServlet
  10. */
  11. publicclassAbstractServletextendsHttpServlet{
  12. privatestaticfinallongserialVersionUID=1L;
  13. /**
  14. *@seeHttpServlet#HttpServlet()
  15. */
  16. publicAbstractServlet(){
  17. super();
  18. //TODOAuto-generatedconstructorstub
  19. }
  20. publicvoidinit(ServletConfigconfig)throwsServletException{
  21. SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
  22. config.getServletContext());
  23. }
  24. /**
  25. *@seeHttpServlet#doGet(HttpServletRequestrequest,HttpServletResponse
  26. *response)
  27. */
  28. protectedvoiddoGet(HttpServletRequestrequest,
  29. HttpServletResponseresponse)throwsServletException,IOException{
  30. }
  31. /**
  32. *@seeHttpServlet#doPost(HttpServletRequestrequest,HttpServletResponse
  33. *response)
  34. */
  35. protectedvoiddoPost(HttpServletRequestrequest,
  36. HttpServletResponseresponse)throwsServletException,IOException{
  37. doGet(request,response);
  38. }
  39. }

关键在于SpringBeanAutowiringSupport.processBInjectionasedOnServletContext(this,

Java代码 收藏代码
  1. config.getServletContext());
Java代码 收藏代码
  1. 通过使用spring提供的支持可以将当前的servlet上下文环境添加到spring管理的上下文环境中。
Java代码 收藏代码
  1. 当然还有其他一些方法就不在这赘述了。

你可能感兴趣的:(servlet)