一、servlet自动配置原理
servlet自动配置是EmbeddedServletContainerAutoConfiguration,我们以tomcat容器来分析一下这个类代码
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)
@Configuration
@ConditionalOnWebApplication
自动导入BeanPostProcessorsRegistrar,我们修改servlet配置通过这个类生效
@Import(BeanPostProcessorsRegistrar.class)
public class EmbeddedServletContainerAutoConfiguration {
这个是tomcat容器
@Configuration
必须存在类tomcat.class
@ConditionalOnClass({ Servlet.class, Tomcat.class })
如果不存在EmbeddedServletContainerFactory则配置tomcat服务器
@ConditionalOnMissingBean(value = EmbeddedServletContainerFactory.class, search = SearchStrategy.CURRENT)
public static class EmbeddedTomcat {
@Bean
public TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() {
return new TomcatEmbeddedServletContainerFactory();
}
}
配置类返回了TomcatEmbeddedServletContainerFactory,这个类继承了AbstractEmbeddedServletContainerFactory,而它实现了EmbeddedServletContainerFactory,
public interface EmbeddedServletContainerFactory {
EmbeddedServletContainer getEmbeddedServletContainer(
ServletContextInitializer... initializers);
这里面只有一个方法getEmbeddedServletContainer&#x