package config; import config.refreshEvent.ContextRefreshEvent; import filter.FilterDelegator; import filter.WelcomeHandlingFilter; import org.springframework.util.StringUtils; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; import javax.servlet.*; import java.util.ArrayList; import java.util.EnumSet; import java.util.EventListener; import java.util.List; /** * Created by com on 2017/7/25. *
* 相当于web.xml的加载配置
*/
/***
* FilterRegistration.Dynamic welcomePagFilter = container.addFilter("WelcomePagFilter", new WelcomePagFilter());
* welcomePagFilter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*");
* 上述是配置过滤器作用的请求.
* 这里已经包装起来了
*/
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
// 配置和监听器
registerServletFilters(servletContext);
registerListeners(servletContext);
//刷新事件需要作为监听器在这边配置
ContextRefreshEvent refreshEvent = new ContextRefreshEvent();
servletContext.addListener(refreshEvent.getClass());
}
/**
* 配置ContextComponentLoader
*/
@Override
protected Class>[] getRootConfigClasses() {
// return new Class>[]{ContextComponentLoder.class};
return new Class>[]{};
}
/**
* 配置DispatcherServlet
*/
@Override
protected Class>[] getServletConfigClasses() {
return new Class>[]{MvcComponentLoader.class};
}
/**将DispatcherServlet映射到指定路径
配置ServletMappings*/
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
/**
* 在ServletContext中添加过滤器,并把过滤器应用于DispatcherServlet。
*
* @param servletContext Servlet上下文
*/
protected void registerServletFilters(ServletContext servletContext) {
List
*
* 参考:
* 1、支持异步操作时,默认为:DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.INCLUDE、DispatcherType.ASYNC;
* 2、不支持异步操作时,默认为:DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.INCLUDE。
*
* AbstractDispatcherServletInitializer.getDispatcherTypes()
*
* @return DispatcherType集合
*/
protected final EnumSet