Spring Boot自动配置源码

  • 时间:
  • 浏览:4
  • 来源:5分3D_5分排列5

内嵌式Tomcat通过Tomcat类创建并配置的,亲们还时要看看Spring是何如包装的,使用工厂类TomcatEmbeddedServletContainerFactory -> getEmbeddedServletContainer() :

所有用户通过工厂类EmbeddedServletContainerFactory配置容器,这类:application.properties中的server.port=50099,

涵盖@ConfigurationProperties注解的ServerProperties,自动注入了application.properties中关于server.*的配置.

Spring使用EmbeddedServletContainer包装了Tomcat,封装了内嵌容器的生命周期.

而且用户而且用@Bean自定义了4个 MongoClient,没办法 Mongo AutoConfig就不让做去初始化MongoClient,配置文件中的配置也就不生效了.

除了配置文件最好的办法,亲们还还时要:

容器类EmbeddedServletContainer控制着内嵌服务器的生命周期以及配置.

还时要看了MongoClient最终由MongoAutoConfiguration调用MongoProperties的createMongoClient()最好的办法创建.通过标注@Bean将MongoClient发布到Spring容器中.

而且是web类型的工程,SpringBoot会创建EmbeddedWebApplicationContext上下文 -> 使用createEmbeddedServletContainer最好的办法创建内嵌的servlet服务容器( 由工厂类EmbeddedServletContainerFactory -> getEmbeddedServletContainer()创建Servlet容器, ->initialize() 一块儿进行容器初始化及运行 )

Initializers用于加载配置(Environment)

Auto Configure用于自动配置类

Mongo的AutoConfiguration而且在用户引入Mongo相关包时,而且没办法 自定义MongoDbFactory时被激活,一块儿配置文件(application.properties这类的)将注入到MongoProperties中.MongoProperties类由@ConfigurationProperties标注:

而且ServerProperties实现了EmbeddedServletContainerCustomizer接口,ServerProperties通过该接口的最好的办法,对EmbeddedServletContainerFactory进行配置:

亲们来看下Mongo的AutoConfiguration,如下:

SpringBoot会从META-INF/spring.factories文件中加载Initializers,Auto Configure

而且用户没办法 自定义EmbeddedServletContainerFactory搞笑的话,EmbeddedServletContainerAutoConfiguration就默认初始化4个 .

http://geowarin.github.io/understanding-spring-boot.html

http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-troubleshoot-auto-configuration

http://blog.csdn.net/liaokailin/article/category/5765237

直接当时人创建工厂类,并实现addConnectorCustomizers接口中的customizer.这每段会覆盖配置文件的配置,在TomcatEmbeddedServletContainerFactory的getEmbeddedServletContainer() -> customizeConnector() 中会调用亲们自定义的customizer: