Spring Boot自动配置源码

  • 时间:
  • 浏览:3
  • 来源:神彩排列三_彩神排列三官方

倘若用户这样 自定义EmbeddedServletContainerFactory励志的话 ,EmbeddedServletContainerAutoConfiguration就默认初始化一一4个多.

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

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

倘若用户倘若用@Bean自定义了一一4个多MongoClient,这样 Mongo AutoConfig就之前 做去初始化MongoClient,配置文件中的配置也就不生效了.

Mongo的AutoConfiguration倘若在用户引入Mongo相关包时,倘若这样 自定义MongoDbFactory时被激活,同去配置文件(application.properties类似的)将注入到MongoProperties中.MongoProperties类由@ConfigurationProperties标注:

Initializers用于加载配置(Environment)

Auto Configure用于自动配置类

亲戚亲戚朋友儿儿来看下Mongo的AutoConfiguration,如下:

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

除了配置文件土最好的办法,亲戚亲戚朋友儿儿还并能:

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

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

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

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

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

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

内嵌式Tomcat通过Tomcat类创建并配置的,亲戚亲戚朋友儿儿并能看看Spring是怎么后能 包装的,使用工厂类TomcatEmbeddedServletContainerFactory -> getEmbeddedServletContainer() :

直接其他人创建工厂类,并实现addConnectorCustomizers接口中的customizer.这偏离 会覆盖配置文件的配置,在TomcatEmbeddedServletContainerFactory的getEmbeddedServletContainer() -> customizeConnector() 中会调用亲戚亲戚朋友儿儿自定义的customizer: