【springboot】启动原理
目录 1. 说明 2. 启动类与注解 3. SpringApplication的构建与服务类型确定 4. 启动流程 5. 自动配置与Bean实例化 6. 启动内嵌服务器
1. 说明
1.Spring Boot的启动原理是一个复杂而又精妙的流程,它涉及多个组件和步骤的协同工作。
2. 启动类与注解
1.Spring Boot应用通常由一个带有@SpringBootApplication注解的主启动类启动。@SpringBootApplication是一个复合注解,它主要由@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三个注解构成 2.@SpringBootConfiguration:标记当前类为Spring配置类,等同于@Configuration注解。 3.@EnableAutoConfiguration:负责自动配置Spring应用上下文,加载符合条件的@Configuration配置类。这个注解通过@Import引入了AutoConfigurationImportSelector,该类负责从META-INF/spring.factories文件中加载自动配置类。 4.@ComponentScan:自动扫描并加载符合条件的Spring Bean,这些特定的注解大致包括@Controller、@Entity、@Component、@Service、@Repository等。
3. SpringApplication的构建与服务类型确定
1.SpringApplication.run()是Spring Boot应用启动的入口。 2.资源加载器与主方法类的记录:记录资源加载器和主方法类。 3.确定Web服务的类型:可能是SERVLET、REACTIVE或NONE。WebApplicationType.deduceFromClasspath()方法会根据类路径中存在的类来推断当前应用的Web环境类型。 4.加载配置:加载META-INF/spring.factories文件中的BootstrapRegistryInitializer、ApplicationContextInitializer和ApplicationListener配置。
4. 启动流程
1.初始化配置:通过类加载器读取classpath下所有的spring.factories配置文件,创建一些初始配置对象;通知监听者应用程序启动开始,创建环境对象environment,用于读取环境配置,如application.yml或application.properties。 2.创建应用程序上下文:创建ApplicationContext和BeanFactory对象。 3.刷新上下文(启动核心): a.配置工厂对象,包括上下文类加载器、对象发布处理器、BeanFactoryPostProcessor。 b.注册并实例化BeanFactoryPostProcessor,并且调用这些处理器,对包进行扫描解析(主要是class文件)。 c.注册并实例化BeanPostProcessor。 d.初始化一些与上下文有特别关系的Bean对象(如创建Tomcat服务器)。 e.实例化所有BeanFactory缓存的Bean对象(剩下的)。 f.发布通知,通知上下文刷新完成(启动Tomcat服务器)。 4.通知监听者:启动程序完成。在启动过程中,大部分对象都是通过BeanFactory对象通过反射创建的。
5. 自动配置与Bean实例化
1.Spring Boot的自动配置机制会根据项目中添加的jar依赖,尝试猜测并配置可能需要的Bean。 2.自动配置类会根据条件进行加载和执行,以确保配置的正确性和合理性。 3.所有配置类和组件被加载后,Spring容器会根据需要创建和配置Bean实例。 4.这些Bean可能是由Spring Boot提供的自动配置,也可能是开发者自定义的Bean。
6. 启动内嵌服务器
1.Spring Boot内置了Tomcat、Jetty等Web服务器。 2.当Spring Boot应用程序启动时,它会根据配置文件中的信息自动创建Tomcat或Jetty等Web容器,并将Spring容器注册到Web容器中,使得Spring Boot应用程序可以直接以Web应用程序的形式运行。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/473570.html
如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!