版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yzy199391/article/details/89887005
MVC配置替代方案
自定义DispatcherServlet配置
- customizeRegistration(Registration.Dynamic registration):
AbstractDispatcherServletInitializer
中定义的方法,利用传入的Dynamic
可以完成多项任务,Dynamic是Servlet3中用于动态注册Servlet所使用的类。
public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
/**
* 重载方法:对DispatcherServlet进行额外配置
* @param registration DispatcherServlet注册到Servlet容器后,得到的对象
*/
@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration){
//设置MultipartConfigElement
registration.setMultipartConfig(
//设置上传文件的临时存储目录
new MultipartConfigElement("/tmp/spittr/uploads")
);
//设置load-on-startup优先级
registration.setLoadOnStartup(1);
//设置安全角色
registration.setRunAsRole("admin");
//设置初始化参数
registration.setInitParameters(new HashMap<>());
}
}
如上述代码,重载customizeRegistration方法,实现自定义DispatcherServlet。
- 实现
WebApplicationInitializer
重写onStartup(ServletContext servletContext)
方法,可以完成其它组件(Servlet、Filter、Listener等)的注册。
public class MyServletInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
Registration.Dynamic myServlet = servletContext.addServlet("MyServlet", MyServlet.class);
((ServletRegistration.Dynamic) myServlet).addMapping("/custom/**");
}
}
上述代码注册了一个Servlet。
- 继承
AbstractAnnotationConfigDispatcherServletInitializer
重载getServletFilters()
注册Filter,在只注册filter且该filter只会映射到DispatcherServlet上时可使用的快捷方式。
@Override
protected Filter[] getServletFilters(){
return new Filter[] {new MyFilter()};
}