1. Spring MVC 除扩展AbstractAnnotationConfigDispatcherServletInitializer
以外的配置方法
1.1 自定义DispatcherServlet配置
通过扩展AbstractAnnotationConfigDispatcherServletInitializer
,除必须要重载的getServletMappings()
、getServletConfigClasses()
、getRootConfigClasses()
方法外,还可以重载很多方法来实现额外的配置
- 比如
customizeRegistration()
:在AbstractAnnotationConfigDispatcherServletInitializer
将DispatcherServlet注册到Servlet容器后就会调用这个方法,并将Servlet注册后得到的Registration.Dynamic传递进来,重载这个方法可以进行额外配置- 比如 启用multipart请求:
@Override protected void customizeRegistration(ServletRegistration.Dynamic registration) { //设置上传文件的临时存储目录 registration.setMultipartConfig(new MultipartConfigElement("/tmp/spitter/uploads")); }
- 比如 启用multipart请求:
1.2 添加其他的Servlet和Filter
基于Java的初始化器(initializer)的一个好处是我们可以定义任意数量的初始化器类,如果我们想往Web容器中注册其他组件的话,只需再创建一个初始化器就行了,最简单的方式是实现Spring的WebApplicationInitializer
接口:
public class MyServletInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
//注册Servlet
ServletRegistration.Dynamic myServlet = servletContext.addServlet("myServlet", MyServlet.class);
//映射Servlet
myServlet.addMapping("/customer/**");
//注册Filter
FilterRegistration.Dynamic myFilter = servletContext.addFilter("myFilter", MyFilter.class);
//添加Filter的映射路径
myFilter.addMappingForUrlPatterns