美文网首页
spring boot的spring.factories配置的不

spring boot的spring.factories配置的不

作者: 何德何能者 | 来源:发表于2021-02-09 16:12 被阅读0次

本章探索spring boot的spring.factories以及 加载时机

spring-boot包下的spring.factories文件配置的key有

  • org.springframework.boot.env.PropertySourceLoader
  • org.springframework.boot.SpringApplicationRunListener
  • org.springframework.boot.SpringBootExceptionReporter
  • org.springframework.context.ApplicationContextInitializer
  • org.springframework.context.ApplicationListener
  • org.springframework.boot.env.EnvironmentPostProcessor
  • org.springframework.boot.diagnostics.FailureAnalyzer
  • org.springframework.boot.diagnostics.FailureAnalysisReporter

org.springframework.boot.env.PropertySourceLoader

功能:

加载配置

加载时机:
  • Environment初始化完成
    • 发出ApplicationEnvironmentPreparedEvent事件
      • ConfigFileApplicationListener监听事件,触发postProcessEnvironment,loader
        • loader触发加载PropertySourceLoader

org.springframework.boot.SpringApplicationRunListener

功能:

监听spring-boot启动的不同状态下的不同事件

加载时机
  • SpringApplication实例化之后,执行run方法
    • getRunListeners获取所有SpringApplicationRunListener, 在Environment实例化之前

org.springframework.boot.SpringBootExceptionReporter

功能:

捕获spring-boot启动异常,输出易于读的格式

加载时机
  • SpringApplication实例化之后,执行run方法
    • ApplicationContext实例化后
      • 加载SpringBootExceptionReporter的实现如, FailureAnalyzers

org.springframework.context.ApplicationContextInitializer

功能

初始化/完善ApplicationContext

加载时机
  • SpringApplication实例化
    • SpringApplication构造方法加载ApplicationContextInitializer

org.springframework.context.ApplicationListener

功能

监听spring事件

加载时机
  • SpringApplication实例化
    • SpringApplication构造方法加载ApplicationListener

org.springframework.boot.env.EnvironmentPostProcessor

功能

Environment后置处理

加载时机
  • Environment初始化完成
    • 发出ApplicationEnvironmentPreparedEvent事件
      • ConfigFileApplicationListener监听事件,触发loadPostProcessors加载并触发EnvironmentPostProcessor

org.springframework.boot.diagnostics.FailureAnalyzer

功能

异常分析

加载时机
  • SpringApplication实例化之后,执行run方法
    • ApplicationContext实例化后
      • 加载SpringBootExceptionReporter的实现如, FailureAnalyzers
        • FailureAnalyzers加载FailureAnalyzer

org.springframework.boot.diagnostics.FailureAnalysisReporter

功能

异常分析报告

加载时机
  • SpringApplication实例化之后,执行run方法
    • ApplicationContext实例化后
      • 加载SpringBootExceptionReporter的实现如, FailureAnalyzers
        • FailureAnalyzers输出报告时加载FailureAnalysisReporter

spring-boot-autoconfigure包下的spring.factories的key

跟spring-boot包下不同的key有

  • org.springframework.boot.autoconfigure.EnableAutoConfiguration
  • org.springframework.boot.autoconfigure.AutoConfigurationImportListener
  • org.springframework.boot.autoconfigure.AutoConfigurationImportFilter
  • org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider

org.springframework.boot.autoconfigure.EnableAutoConfiguration

功能

注解配置,自动加载类

加载时机

是spring-boot扩展了spring的ImportSelector接口来实现的

  • SpringApplicaton实例化,把启动main方法持有
    • SpringApplication.run方法
      • 初始化监听,初始化Environment, 实例化ApplicationContext
        • 刷新ApplicationContext, AbstractApplicationContext.refresh()方法。 invokeBeanFactoryPostProcessors触发BeanDefinitionRegistryPostProcessor处理,解析持有main方法上的注解, 注解如果有@Import(AutoConfigurationImportSelector.class),则触发AutoConfigurationImportSelector的getAutoConfigurationEntry方法完成加载

org.springframework.boot.autoconfigure.AutoConfigurationImportListener

功能

EnableAutoConfiguration配置被加载时触发

加载时机
  • org.springframework.boot.autoconfigure.EnableAutoConfiguration完成加载
    • 同样是在AutoConfigurationImportSelector.getAutoConfigurationEntry方法触发加载和执行

org.springframework.boot.autoconfigure.AutoConfigurationImportFilter

功能

对加载的EnableAutoConfiguration进行过滤,根据具体类文件上声明的@Conditionxxx注解等

  • org.springframework.boot.autoconfigure.EnableAutoConfiguration完成加载
    • 同样是在AutoConfigurationImportSelector.getAutoConfigurationEntry方法触发加载和执行过滤

org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider

功能

提供可用的视图模板引擎查找

加载时机
  • 配合webApplicationContext
    • 如ErrorMvcAutoConfiguration,配置错误页面, /error
      • 构造视图解析器时加载,如DefaultErrorViewResolver

相关文章

网友评论

      本文标题:spring boot的spring.factories配置的不

      本文链接:https://www.haomeiwen.com/subject/osqcxltx.html