Spring框架作为Java应用开发的基石,其启动流程是每个开发者都应该深入了解的部分。本文将详细剖析Spring源码中的run函数启动流程,带你一步步走进Spring的启动世界。
一、SpringApplication对象的创建
当我们调用SpringApplication.run(Class<?> primarySource, String… args)方法时,首先会创建一个SpringApplication对象。在这个过程中,Spring会进行一些初始化的工作,包括:
推断应用类型:根据传入的primarySource(主类)和类路径,推断应用是Web应用还是非Web应用。
设置应用上下文类:根据应用类型,选择合适的ApplicationContext实现类。例如,对于Web应用,通常会选择AnnotationConfigServletWebServerApplicationContext。
注册命令行参数:将传入的args(命令行参数)保存到SpringApplication对象中,供后续使用。
二、加载和准备环境
在SpringApplication对象创建完成后,run方法会继续加载和准备环境。
创建环境:根据是否使用了Web环境,创建相应的ConfigurableEnvironment实例(如StandardEnvironment或StandardServletEnvironment)。
配置环境属性:从配置文件(如application.properties或application.yml)和命令行参数中加载属性,并设置到环境中。