SpringBoot系列之嵌入式servlet容器自动配置原理

嵌入式servlet容器自动配置原理

springboot中存在大量的自动配置类,了解它的工作原理有助于加深对代码的理解,实现自定义配置的修改,同时也方便以后借鉴其设计模式;本文通过研究EmbeddedServletContainerAutoConfiguration:嵌入式的Servlet容器自动配置类,并分析其中一种常用的Servlet容器,来理解嵌入式servlet容器自动配置的原理。

@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE)
@Configuration
@ConditionalOnWebApplication // 在web应用下才会生效
@Import(BeanPostProcessorsRegistrar.class) // 导入后置处理器组件
public class EmbeddedServletContainerAutoConfiguration {
	/**
	 * Nested configuration if Tomcat is being used.
	 */
	@Configuration
        // 判断当前是否引入tomcat依赖
        // 按照此原理我们可以通过排除tomcat依赖,并引入jetty或undertow依赖,达到切换嵌入式容器的目的
	@ConditionalOnClass({ Servlet.class, Tomcat.class }) 
        // 判断当前容器中没有用户自己定义的嵌入式servlet容器工厂:EmbeddedServletContainerFactory;作用:创建嵌入式的servlet容器
	@ConditionalOnMissingBean(value = EmbeddedServletContainerFactory.class, search = SearchStrategy.CURRENT) 
	public static class EmbeddedTomcat {
		@Bean
		public TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() {
			return new TomcatEmbeddedServletContainerFactory();
		}
	}

 1. 嵌入式servlet容器工厂(EmbeddedServletContainerFactory)

查看继承关系发现springboot已经为我们配置好了三个容器工厂,按照此原理我们可以通过排除tomcat依赖,并引入jetty或undertow依赖,就可以达到切换嵌入式容器的目的了。

public interface EmbeddedServletContainerFactory {
	// 获取嵌入式的servlet容器
	EmbeddedServletContainer getEmbeddedServletContainer(
			ServletContextInitializer... initializers);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值