Spring Boot自动配置源码

  • 时间:
  • 浏览:1
  • 来源:大发彩神APP_大发神彩APP官方

机会用户如此 自定义EmbeddedServletContainerFactory语录,EmbeddedServletContainerAutoConfiguration就默认初始化4个 .

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

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

Mongo的AutoConfiguration机会在用户引入Mongo相关包时,只要如此 自定义MongoDbFactory时被激活,一起配置文件(application.properties这类 的)将注入到MongoProperties中.MongoProperties类由@ConfigurationProperties标注:

内嵌式Tomcat通过Tomcat类创建并配置的,当当我们 都不还可以 看看Spring是怎么可以包装的,使用工厂类TomcatEmbeddedServletContainerFactory -> getEmbeddedServletContainer() :

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

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

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

当当我们 来看下Mongo的AutoConfiguration,如下:

机会ServerProperties实现了EmbeddedServletContainerCustomizer接口,ServerProperties通过该接口的方法 ,对EmbeddedServletContainerFactory进行配置:

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

Initializers用于加载配置(Environment)

Auto Configure用于自动配置类

除了配置文件方法 ,当当我们 还都不还可以 :

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

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

机会用户机会用@Bean自定义了4个 MongoClient,如此 Mongo AutoConfig就不想做去初始化MongoClient,配置文件中的配置也就不生效了.

都不还可以 都看MongoClient最终由MongoAutoConfiguration调用MongoProperties的createMongoClient()方法 创建.通过标注@Bean将MongoClient发布到Spring容器中.