• 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类,进而使我们的配置在项目中生效;

  • 相关阅读:
    MSSQL·阻止保存要求重新创建表的更改配置
    MSSQL·查询某数据库中所有表的记录数并排序
    异常处理·psftp·local unable to open
    MSSQL·Execution Timeout Expired. The timeout period elapsed prior to completion of the oper..
    MSSQL·ORDER BY 1 DESC是什么写法?
    MSSQL·大数据量历史数据清理的思路
    ubuntu清理wine卸载后的残余项目
    Learning the Vi Editor, 6th Edition O'Reilly Media
    做一粒不浮躁的好“种子”
    Qt Designer使用简易教程
  • 原文地址:https://www.cnblogs.com/lzj-learn/p/14451988.html
Copyright © 2020-2023  润新知