Spring Web应用程序:Post-DispatcherServlet初始化


问题内容

我正在使用Spring 3.2 DispatcherServlet。我找了一个初始化钩子发生
DispatcherServlet初始化完成; 标准的Spring解决方案或servlet解决方案。有什么建议么?

作为参考,遵循Servlet启动后的最终日志记录语句。我希望在configured successfully
log语句之后立即执行初始化方法。

DEBUG o.s.w.s.DispatcherServlet - Published WebApplicationContext of servlet 'mySpringDispatcherServlet' as ServletContext attribute with name [org.springframework.web.servlet.FrameworkServlet.CONTEXT.mySpringDispatcherServlet] 
INFO  o.s.w.s.DispatcherServlet - FrameworkServlet 'mySpringDispatcherServlet': initialization completed in 5000 ms   
DEBUG o.s.w.s.DispatcherServlet - Servlet 'mySpringDispatcherServlet' configured successfully

根据我的研究,到目前为止,以下内容 并未 达到预期的效果:

  1. 扩展ContextLoaderListener/实现ServletContextListener
  2. WebApplicationInitializer根据javaoc实现。
  3. 我的bean使用@PostConstruct成功;我正在寻找一个Servlet或容器级别的钩子,该钩子将在容器初始化和对bean进行后处理之后基本上执行。

问题答案:

根本问题是我无法覆盖该final方法HttpsServlet.init()。我发现附近的@Override-able方法DispatcherServlet.initWebApplicationContext可确保我的bean和上下文已完全初始化:

@Override
受保护的WebApplicationContext initWebApplicationContext()
{
    WebApplicationContext wac = super.initWebApplicationContext();

    //通过以下方式对初始化的Foo bean进行处理:
    // wac.getBean(Foo.class);

    返回结果;
}