zoukankan      html  css  js  c++  java
  • 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类,进而使我们的配置在项目中生效;

  • 相关阅读:
    mysql 自定义排序
    arcgis 好人
    eclipse启动tomcat,提示三个端口均被占用
    oracle 查看表空间创建日期
    navacat 链接oracle oci invalid handle
    java +mysql 递归排序/* START WITH aa.parentid IN ( 10000, 20000, 30000, 40000, 50000, 60000, 70000 ) connect BY prior aa.id = aa.parentid ORDER siblings BY aa.id ASC*/ to
    Double 转 BigDecimal
    mysql 死锁 Waiting for stored function metadata lock
    Graphtree--zabbix增强功能(一屏展示所有内容)
    zabbix 分布式监控(proxy)源码安装
  • 原文地址:https://www.cnblogs.com/lzj-learn/p/14451988.html
Copyright © 2011-2022 走看看