很多情況在進行Web開發的時候需要自己手寫Servlet來完成某些功能,而servlet有需要注入Spring容器中的某些bean,這是每次都要手動獲取比較麻煩,這里有一個解決方案,只需要寫一個servlet的基類,其它的類只需要集成基類后,便可以想action那樣進行注入了。
基類Servlet代碼如下:
1 public class BaseServlet extends HttpServlet { 2 private static final long serialVersionUID = 1L; 3 4 public void init() throws ServletException { 5 super.init(); 6 WebApplicationContextUtils 7 .getWebApplicationContext(getServletContext()) 8 .getAutowireCapableBeanFactory().autowireBean(this); 9 } 10 11 }
具體的功能servlet代碼如下:
1 @WebServlet("/testServlet") 2 public class TestServlet extends BaseServlet { 3 4 private static final long serialVersionUID = 1L; 5 @Autowired 6 private TestService testService = null; 7 8 protected void doGet(HttpServletRequest request, 9 HttpServletResponse response) throws ServletException, IOException { 10 testService.print(); 11 } 12 13 protected void doPost(HttpServletRequest request, 14 HttpServletResponse response) throws ServletException, IOException { 15 doGet(request, response); 16 } 17 }
其中testServic屬性便是自動注入的。具體的spring配置注入不再細說。