SpringBoot源码主线
文章平均质量分 82
以SpringApplication深入的SpringBoot源码讲解,主线讲解的都是主要代码,支线讲解的都是Spring的辅助代码(工具类、助手类等)
血色蕾米莉亚
指尖上跃动的代码,是我此生不灭的信仰
展开
-
深入SpringBoot源码(十四)postProcessApplicationContext与applyInitializers
postProcessApplicationContext应用任何相关的后置处理ApplicationContext。子类可以根据需要应用额外的处理。 protected void postProcessApplicationContext(ConfigurableApplicationContext context) { if (this.beanNameGenerator != null) { context.getBeanFactory().registerSingleton(Annot.原创 2022-04-24 16:36:57 · 1221 阅读 · 0 评论 -
深入SpringBoot源码(十三)context.setEnvironment
这章我们开始学习SpringApplication对ApplicationContext的相关操作,ApplicationContext的prepare与refresh可以算是SpringApplication的最重要部分。SpringApplication的prepareContext方法: private void prepareContext(DefaultBootstrapContext bootstrapContext, ConfigurableApplicationContext cont原创 2022-04-23 15:24:09 · 852 阅读 · 0 评论 -
深入SpringBoot源码(十二)ApplicationContext与BeanFactory的创建
SpringApplication的createApplicationContext是用于创建ApplicationContext的策略方法。默认情况下,此方法将尊重任何显式设置的应用程序上下文类或工厂,然后再回退到合适的默认值。此方法返回的应用程序上下文是尚未刷新的。 private ApplicationContextFactory applicationContextFactory = ApplicationContextFactory.DEFAULT; protected Configura.原创 2022-04-22 16:10:02 · 1296 阅读 · 0 评论 -
深入SpringBoot源码(十一)SpringApplication与Environment的绑定(下)
上一章讲到了SpringApplication的bindToSpringApplication的Binder.get(environment)方法, 这章接着讲Binder的bind方法。bindToSpringApplication方法通过Binder.get(environment)方法得到了Binder实例,再调用bind(String name, Bindable target)方法使用此 binder的property sources绑定指定的目标Bindable。 public <T原创 2022-04-21 22:34:43 · 1133 阅读 · 0 评论 -
深入SpringBoot源码(十)SpringApplication与Environment的绑定(上)
SpringApplication的prepareEnvironment方法:DefaultPropertiesPropertySource继承MapPropertySource,MapPropertySource包含直接贡献给SpringApplication的默认属性。按照惯例, DefaultPropertiesPropertySource始终是Environment中的最后一个属性源。DefaultPropertiesPropertySource的moveToEnd方法移动“defaultPro原创 2022-04-21 09:27:03 · 1735 阅读 · 0 评论 -
深入SpringBoot源码(九)SpringApplication与Environment绑定的前置工作(下)
接着上章所讲的EventPublishingRunListener的构造方法:SimpleApplicationEventMulticaster是ApplicationEventMulticaster接口的简单实现。它将所有事件多播到所有注册的监听器,让监听器忽略他们不感兴趣的事件。监听器通常会对传入的事件对象执行相应的instanceof检查。默认情况下,所有监听器监听器都在调用线程中调用,这会增加恶意监听器阻塞整个应用程序的危险性。所以最好指定一个替代任务执行器,让监听器在不同的线程中执行,例如原创 2022-04-20 22:12:31 · 1811 阅读 · 0 评论 -
深入SpringBoot源码(八)SpringApplication与Environment绑定的前置工作(中)
listeners.environmentPreparedSpringApplicationRunListeners有以下几个成员字段: //org.apache.commons.logging.Log private final Log log; private final List<SpringApplicationRunListener> listeners; private final ApplicationStartup applicationStartup;Sp原创 2022-04-19 15:04:38 · 2364 阅读 · 1 评论 -
深入SpringBoot源码(七)SpringApplication与Environment绑定的前置工作(上)
ConfigurationPropertySources的attach方法将ConfigurationPropertySource支持附加到指定的Environment。使环境管理的每个PropertySource适应ConfigurationPropertySource并允许经典的PropertySourcesPropertyResolver调用使用configuration property names进行解析。附加的解析器将动态跟踪来自基础Environment属性源的任何添加或删除。 publ.原创 2022-04-19 10:59:57 · 2479 阅读 · 0 评论 -
深入SpringBoot源码(六)configurePropertySources
configurePropertySourcesSpringApplication的configurePropertySources方法用于在此应用程序的环境中添加、删除或重新排序任何PropertySource。 protected void configurePropertySources(ConfigurableEnvironment environment, String[] args) { MutablePropertySources sources = environment.getP原创 2022-04-17 15:33:27 · 2776 阅读 · 0 评论 -
深入SpringBoot源码(五)设置ApplicationConversionService
configureEnvironment由于我引入了spring-boot-starter-webflux依赖,经过了getOrCreateEnvironment方法后得到了一个ApplicationReactiveWebEnvironment原创 2022-04-16 17:47:25 · 4047 阅读 · 0 评论 -
深入SpringBoot源码(四)初识Environment
new DefaultApplicationArguments原创 2022-04-15 16:36:39 · 3332 阅读 · 0 评论 -
深入SpringBoot源码(三)prepareEnvironment前的操作
SpringApplication的run方法运行 Spring 应用程序,创建并刷新一个新的ApplicationContext。原创 2022-04-14 17:45:18 · 4142 阅读 · 0 评论 -
深入SpringBoot源码(二)getSpringFactoriesInstances方法详解
SpringApplication的getSpringFactoriesInstances方法的第1行代码在传入的ResourceLoader是null时,调用ClassUtils.getDefaultClassLoader()方法 public static ClassLoader getDefaultClassLoader() { ClassLoader cl = null; try { cl = Thread.currentThread().getContextClassLoad原创 2022-04-13 16:59:03 · 5808 阅读 · 1 评论 -
深入SpringBoot源码(一)从SpringApplication的构造方法入门源码
1.学习SpringBoot源码的入口点2.SpringApplication的构造方法3.初识ResourceLoader、Resource4.WebApplicationType枚举5.初识BootstrapRegistryInitializer、BootstrapRegistry6.初识getSpringFactoriesInstances方法7.初识ApplicationListener、ApplicationEvent、PayloadApplicationEvent原创 2022-04-07 09:45:31 · 10834 阅读 · 0 评论