protected void registerDispatcherServlet(ServletContext servletContext) {
//获取servletName,默认名称是dispatcher
String servletName = getServletName();
Assert.hasLength(servletName,“getServletName()不能返回空或null”);
//创建servlet程序上下文 - >
WebApplicationContext servletAppContext = createServletApplicationContext();
Assert.notNull(servletAppContext,
“createServletApplicationContext()没有返回
servlet [”+ servletName +“]”)的应用程序“+ ”上下文;
//创建DispatcherServlet
FrameworkServlet dispatcherServlet = createDispatcherServlet(servletAppContext);
//注册的servlet上下文初始化器,这里是模板实现
dispatcherServlet.setContextInitializers(getServletApplicationContextInitializers());
//添加的DispatcherServlet到的servlet容器
ServletRegistration.Dynamic registration = servletContext.addServlet(servletName,dispatcherServlet);
Assert.notNull(注册,
“无法注册名称为'的servlet +”+ servletName +“'。”+
“检查是否有另一个以相同名称注册的servlet。”);
registration.setLoadOnStartup(1);
//获取servletMapping实现,这里是抽象实现,注册映射
registration.addMapping(getServletMappings());
//设置是否支持异步,默认支持
registration.setAsyncSupported(isAsyncSupported());
//获取servletFilter,这里是模板实现
Filter [] filters = getServletFilters();
if(!ObjectUtils.isEmpty(filters)){
for(Filter filter:filters){
//注册过滤器 - >
registerServletFilter(servletContext,filter);
//定制化注册,默认是模板实现
customizeRegistration(registration);
}