Spring启动流程
Spring启动流程
Spring的启动流程主要包括以下几个步骤:
加载配置文件:Spring应用程序的启动从加载配置文件开始,这些配置文件可以是XML文件、JavaConfig类或注解配置。这些文件定义了bean及其依赖关系。
实例化Bean容器:解析配置文件后,Spring会创建一个Bean容器实例,这个容器负责管理应用程序中的bean,包括解析配置信息、创建和初始化bean。
注册Bean:Bean容器会遍历配置文件,解析每个元素,并注册对应的bean定义。
依赖注入:Spring会自动处理bean之间的依赖关系,通过自动装配机制(如setter注入、构造函数注入或字段注入)将依赖注入到bean中。
初始化Bean:在所有bean都注册并解决依赖关系后,Bean容器会按照配置文件的顺序(或通过其他策略)初始化这些bean。
配置事件发布:在bean初始化过程中,Spring会发布一系列事件,允许开发者在Spring容器初始化或运行时进行自定义操作。
应用上下文启动:一旦所有bean都已初始化,并且相关的配置事件已发布,Spring容器(即应用上下文)就可以宣布启动完成,应用程序准备好接收请求或执行其他任务。
Spring Boot启动流程
Spring Boot的启动流程更加自动化和简化,主要包括以下几个步骤:
加载启动类:Spring Boot应用的入口是一个被@SpringBootApplication注解标记的启动类。
创建SpringApplication实例:通过new关键字创建SpringApplication实例,这是Spring Boot应用的核心类。
分析运行参数:SpringApplication会分析运行时的参数,如命令行参数、系统环境变量等。
设置启动默认值:根据分析得到的参数设置一些默认值,如主程序类、是否使用web环境等。
准备ApplicationContext:根据应用类型(Web还是非Web)创建相应的ApplicationContext对象,并进行一些初始化操作。
加载外部配置文件:加载指定的外部配置文件(如application.properties或application.yml),并将其转化为内部的Environment对象。
执行自定义逻辑:如果存在自定义的ApplicationContextInitializer和ApplicationListener,SpringApplication会按顺序执行它们的逻辑。
执行run方法:调用SpringApplication的run方法,启动Spring Boot应用。
启动容器:根据配置信息创建并启动相应的Spring容器,包括Spring MVC、数据库连接池等。
发布应用启动事件:发布ApplicationStartedEvent,通知其他监听器应用已经启动。
运行应用:Spring Boot应用启动后,根据配置的Web服务器(如Tomcat)开始监听和处理HTTP请求。
这两个流程展示了Spring和Spring Boot在启动时的不同侧重点,Spring Boot通过自动配置和简化步骤,大大提升了开发效率和应用的启动速度。