一、自定义DispatcherServlet配置
AbstractAnnotationConfigDispatcherServletInitializer所完成 的事情其实比看上去要多。在SpittrWebAppInitializer中,原来所编写的三个方法仅仅是必须要重载的abstract方法。但实际上还 有更多的方法可以进行重载,从而实现额外的配置。 此类的方法之一就是customizeRegistration()。 在AbstractAnnotationConfigDispatcherServletInitializer 将DispatcherServlet注册到Servlet容器中之后,就会调 用customizeRegistration(),并将Servlet注册后得到的 Registration.Dynamic传递进来。通过重 载customizeRegistration()方法,我们可以对 DispatcherServlet进行额外的配置。
需求:在Spring MVC中处理multipart请求和文件上传
需要使用DispatcherServlet的 registration来启用multipart请求。可以重 载customizeRegistration()方法来设 置MultipartConfigElement,如下所示:
1 @Override 2 protected void customizeRegistration(Dynamic registration) { 3 // TODO Auto-generated method stub 4 super.customizeRegistration(registration); 5 registration.setMultipartConfig(new MultipartConfigElement("/tmp/spittr/uploads")); 6 }
设置了对multipart的支持,将上传文件的临时存储 目录设置在“/tmp/spittr/uploads”中。
二、添加其他的Servlet和Filter
按 照AbstractAnnotationConfigDispatcherServletInitializer 的定义,它会创建DispatcherServlet和 ContextLoaderListener。但是,如果你想注册其他的Servlet、 Filter或Listener的话,就需要创建一个新的初始化器就可以了。基于Java的初始化器(initializer)的一个好处就在于可以定义任 意数量的初始化器类。最简单的方式就是实现 Spring的WebApplicationInitializer接口。