闲情居|Spring Boot源码解析——Spring Boot系列


闲情居|Spring Boot源码解析——Spring Boot系列一、自动装配原理
闲情居|Spring Boot源码解析——Spring Boot系列之前博文已经讲过 , @SpringBootApplication继承了@EnableAutoConfiguration , 该注解导入了AutoConfigurationImport Selector , 这个类主要是扫描spring-boot-autoconfigure下面的META-INF\spring.factories中的EnableAutoConfiguration对应的全类名 , 其中XXXAutoConfiguration都是一个个自动配置类 。
闲情居|Spring Boot源码解析——Spring Boot系列自动装配原理具体参考:Spring Boot系列(二):Spring Boot自动装配原理解析
二、Spring Boot的jar启动1、Spring Boot自动装配Tomcat组件① EmbeddedWebServerFactoryCustomizerAutoConfiguration内嵌的Web容器工厂定制器自动装配类 , 装配了TomcatWebServerFactoryCustomizer组件
闲情居|Spring Boot源码解析——Spring Boot系列Tomcat工厂定制器TomcatWebServerFactoryCustomizer用来设置容器的属性 , 把ServerProperties中的属性设置到Tomcat容器的工厂中 。
闲情居|Spring Boot源码解析——Spring Boot系列ServerProperties服务的属性类:
闲情居|Spring Boot源码解析——Spring Boot系列② ServletWebServerFactoryAutoConfiguration , ServletWeb工厂自动装配类 , 装配了如下四个组件

  • ServletWebServerFactoryCustomizer:用来定制ServletWeb服务工厂
  • TomcatServletWebServerFactoryCustomizer:用来定制TomcatServletWeb服务工厂
  • ServletWebServerFactoryAutoConfiguration.BeanPostProcessorsRegistrar :后置处理器
  • ServletWebServerFactoryConfiguration:用来配置TomcatServletWeb服务工厂

闲情居|Spring Boot源码解析——Spring Boot系列2、SpringApplication.run启动流程① new SpringApplication(primarySources) , 创建了一个SpringApplication
闲情居|Spring Boot源码解析——Spring Boot系列public SpringApplication(ResourceLoader resourceLoader, Class... primarySources) {this.resourceLoader = resourceLoader;Assert.notNull(primarySources, "PrimarySources must not be null");//设置主配置类 我们自己写的Spring Boot的启动类this.primarySources = new LinkedHashSet<>(Arrays.asList(primarySources));//设置web应用的类型this.webApplicationType = WebApplicationType.deduceFromClasspath();//设置容器初始化器(ApplicationContextInitializer类型的)setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));//把监听器设置到SpringApplication中[ApplicationListener]setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));//设置主配置类this.mainApplicationClass = deduceMainApplicationClass();}


推荐阅读