YaPiBlog


You look look you one day day de

SpringBoot源码系列之SpringBoot Starter解析

基础解析 引入具体配置类 @EnableConfigurationProperties(xxxx.class) conditional注解 含义:基于条件的注解 作用:根据是否满足某一个特定条件来决定是否创建某个特定的Bean 意义:SpringBoot实现自动配置的关键基础能力 常用的conditional注解 @ConditionalOnBean @Condition...

SpringBoot源码系列之Servlet容器启动解析

全局流程解析 在SpringBoot2.x之前,只能区分web环境和非web环境。2.x之后,新增了一个REACTIVE环境。 在执行SpringApplication.run()方法的时候,会首先新建一个SpringApplication对象。在此 对象的初始化过程中,会设置容器当前运行环境属于哪一种。具体判断的方法是判断某些类文件是否存在 static WebApplication...

SpringBoot源码系列之配置类解析

流程 执行入口 SpringBootApplication#run->refreshContext->refresh->invokeBeanFactoryPostProcessors调用 ConfigurationClassPostProcessor类的processConfigBeanDefinitions方法 此方法中的循环即时对配置类解析的重要逻辑 do { ...

SpringBoot源码系列之异常报告器解析

流程 构建过程 run 方法 Collection<SpringBootExceptionReporter> exceptionReporters = new ArrayList<>(); ... exceptionReporters = getSpringFactoriesInstances(SpringBootExceptionReporter.class...

SpringBoot源码系列之Spring Profile

用处 不同的环境,采用不同的配置 一般来说,默认的是使用application.properties文件中的配置。还有一个默认的激活的文件 application-default.properties。 使用 若有多个配置文件,如何配置其中一个为默认配置文件? application-default.properties application-defaults.propertie...

SpringBoot源码系列之Environment属性集添加

设置流程 入口 SpringApplication.run()方法中 ConfigurableEnvironment environment = prepareEnvironment(listeners, applicationArguments); 主要业务逻辑 private ConfigurableEnvironment prepareEnvironment(SpringAp...

SpringBoot源码系列之SpringAware原理解析

Aware使用场景 在Spring框架中,Bean是感知不到容器的存在的,里面不存在任何容器相关的信息。 但是在某些场景需要使用到Spring容器的功能或资源,这个时候就需要使用到 Spring Aware。 使用方式 直接实现相关接口,通过方法注入就能直接使用。 常用的Aware: 类名 作用 ...

SpringBoot源码系列之属性配置方式

属性配置17中方式 优先级逐级下降 若前一优先级配置了,后续级别配置的将不起作用 Devtools全局配置 测试环境@TestPropertySource注解 测试环境properties属性 命令行参数 SPRING_APPLICATION_JSON属性 ServletConfig初始化参数 ServletContext初始化参数 JNDI属性 J...

SpringBoot源码系列之启动加载器解析

什么是启动加载器 如果有一段代码,需要在SpringBoot框架启动后立即执行,就需要运用行一个启动加载器。 实现方式 两种实现方式 第一种实现CommandLineRunner重写run方法 @Component @Order(1) public class FirstCommandlineRunner implements CommandLineRunner { @Ov...

SpringBoot源码系列之banner解析

设置banner的几种方式 默认banner: 什么都不用管 文字banner: 2.1 resources目录下直接新建banner.txt文件 2.2 配置参数 spring.banner.location=banner124.txt 图片banner(gif|png|jpg): 2.1 resources目录下直接新建banner.jpg文件 2.3 配置参数 ...