遵循约定大于配置的原则,在boot程序启动后,起步依赖中的一些bean对象会自动注入到ioc容器
导入spring-boot-starter-web起步依赖会自动引入dispatcherServlet对象
@SpringBootApplication注解内部申明了@EnableAutoConfiguration注解
@EnableAutoConfiguration注解申明@Import(AutoConfigurationImportSelector.class),之后找到org.springframework.boot.autoconfigure包下的
org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration查看它的源代码
发现@ConditionalOnClass(DispatcherServlet.class)注解和@AutoConfiguration(after = ServletWebServerFactoryAutoConfiguration.class)注解@ConditionalOnClass(DispatcherServlet.class)注解表明自动引入dispatcherServlet对象
自动配置核心代码
@Bean(name = DEFAULT_DISPATCHER_SERVLET_BEAN_NAME)
public DispatcherServlet dispatcherServlet(WebMvcProperties webMvcProperties) {
DispatcherServlet dispatcherServlet = new DispatcherServlet();
dispatcherServlet.setDispatchOptionsRequest(webMvcProperties.isDispatchOptionsRequest());
dispatcherServlet.setDispatchTraceRequest(webMvcProperties.isDispatchTraceRequest());
configureThrowExceptionIfNoHandlerFound(webMvcProperties, dispatcherServlet);
dispatcherServlet.setPublishEvents(webMvcProperties.isPublishRequestHandledEvents());
dispatcherServlet.setEnableLoggingRequestDetails(webMvcProperties.isLogRequestDetails());
return dispatcherServlet;
}
注意:自动配置核心在spring.faction中