Spring容器启动后自动执行Servlet进行预处理
通常做法是定义一个Servlet,并在web.xml中配置Servlet的启动顺序<load-on-startup>的值在DispatcherServlet之后。但这样做的缺点是在Servlet中无法使用Spring的依赖注入功能,只能使用WebApplicationContext的getBean()方法获取bean。
找到的解决办法如下:
1、自定义一个用于代理启动Servlet的类DelegatingServletProxy:
<servlet> <description></description> <display-name>InitialServlet</display-name> <servlet-name>initialServlet</servlet-name> <servlet-class>cn.edu.swu.oa.common.util.DelegatingServletProxy </servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>initialServlet</servlet-name> <url-pattern>/InitialServlet</url-pattern> </servlet-mapping>