7.1.1 自定义 DispatcherServlet 配置

虽然从程序清单 7.1 的外观上不一定能够看得出来,但是 AbstractAnnotation-ConfigDispatcherServletInitializer 所完成的事情其实比看上去要多。在 SpittrWeb-AppInitializer 中我们所编写的三个方法仅仅是必须要重载的 abstract 方法。但实际上还有更多的方法可以进行重载,从而实现额外的配置。

此类的方法之一就是 customizeRegistration()。在 AbstractAnnotationConfig-DispatcherServletInitializer 将 DispatcherServlet 注册到 Servlet 容器中之后,就会调用 customizeRegistration(),并将 Servlet 注册后得到的 Registration.Dynamic 传递进来。通过重载 customizeRegistration() 方法,我们可以对 Dispatcher-Servlet 进行额外的配置。

例如,在本章稍后的内容中(7.2 节),我们将会看到如何在 Spring MVC 中处理 multipart 请求和文件上传。如果计划使用 Servlet 3.0 对 multipart 配置的支持,那么需要使用 DispatcherServlet 的 registration 来启用 multipart 请求。我们可以重 载 customizeRegistration() 方法来设置 MultipartConfigElement,如下所示:

@Override
protected void customizeRegistration(Dynamic registration) {
  registration.setMultipartConfig(
    new MultipartConfigElement("/tmp/spittr/uploads");
  );
}

借助 customizeRegistration() 方法中的 ServletRegistration.Dynamic,我们能够完成多项任务,包括通过调用 setLoadOnStartup() 设置 load-on-startup 优先级,通过 setInitParameter() 设置初始化参数,通过调用 setMultipartConfig() 配置 Servlet 3.0 对 multipart 的支持。在前面的样例中,我们设置了对 multipart 的支持,将上传文件的临时存储目录设置在 /tmp/spittr/uploads 中。

Last updated