1、 自定义DispatcherServlet 配置
AbstractAnnotationConfigDispatcherServletInitializer,除了配置类中必须要重载的3个abstract方法,还可以重载更多方法,实现额外的配置。
例如customizeRegistration()
。在AbstractAnnotationConfigDispatcherServletInitializer将DispatcherServlet注册到Servlet容器后,就会调用customizeRegistration(),并将Servlet注册后得到的Registration.Danamic传递进来。
例如配置multipart请求和文件上传:
@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
new MultipartConfigElement("/tmp/spittr/uploads");
}
借助 customizeRegistration() 方法中的 ServletRegistration.Dynamic 可以完成多项任务,包括调用
setLoadOnStartup()
设置 load-on-startup 优先级,通过setInitParameter()
设置初始化参数,通过setMultipartConfig()
配置sevlet 3.0对 multipart 的支持。
2、添加其他的Servlet 和 Filter
实现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("/custom/**");
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
//注册Filter
FilterRegistration.Dynamic myFilter = servletContext.addFilter("myFilter", MyFilter.class)