springboot源码(3)

springboot项目有着自己的内嵌Web容器,我们只需要在pom文件里加入对于的web容器依赖就可以,那到底其中的原理是什么呢?我们又应该怎么来做相应的配置;

与配置spring mvc相同,我们要看springboot的自动装配,只需在

 这里找到对应的配置类就好,请记住web容器的这个配置类:ServletWebServerFactoryAutoConfiguration、打开它

 这里重点看import的4个类,第一个类先跳过,后面再讲解,我们先看springboot为我们自动装配的这3个web容器,以tomcat容器为例,打开:

 可以看到,其实这个EmbeddedTomcat本身也是个配置类,里面会把一个TomcatServletWebServerFactory对象注入到spring容器中,我们打开这个对象,找到其中一个比较重要的方法:getWebServer方法

 里面会帮我们new一个Tomcat,这里之所以可以直接new是因为springboot本身就有依赖:

 最后的这个getTomcatWebServer是springboot本身对tomcat的再封装:

 而这个TomcatWebServer类:

 可以看到,这个封装的tomcat对象的类最终会执行start()方法;

看完了上面tomcat自动装配的整个流程,其实了解源码过程,在应用中作用最大的就是可以自己修改tomcat配置,最常用的自然就是在配置文件中配置,而这些配置参数其实都存在ServerProperties这个类中中:

 

 如果要改相关参数,在这个类中找到对应的属性然后在配置文件中修改即可;而看完tomcat的一个内嵌过程,其实还有另一种方法:

 其实springboot里面做的也不过就是注入个TomcatServletWebServerFactory这个bean,那我们完全可以在配置类中自己配置,配置完之后由于

 这个标注的存在,springboot内置的TomcatServletWebServerFactory类就自然不会再次注入了;

但其实springboot推荐的是:

这个方法,就要说回之前文章跳过的一个类了:ServletWebServerFactoryAutoConfiguration.BeanPostProcessorsRegistrar.class

这个也是ServletWebServerFactoryAutoConfiguration这个配置类会注入的一个类,我们打开它:

里面会注册一个处理WebServerFactoryCustomizer对象的后置处理器:WebServerFactoryCustomizerBeanPostProcessor,打开这个处理器:

 这里就会拿到我们自己在配置类配置好的WebServerFactoryCustomizer类,进而使我们的配置在项目中生效;

原文地址:https://www.cnblogs.com/lzj-learn/p/14451988.html