Spring Boot是Spring Framework的一个扩展,它简化了Spring应用程序的开发和部署流程,并提供了一种快速创建可独立运行Spring应用程序的方式。下面是Spring Boot启动原理的简单流程:
1. 启动类(Main Class)的加载
Spring Boot应用程序的启动类是一个Java类,其中包含了main()方法,它是整个应用程序的入口。在启动过程中,Java虚拟机(JVM)会首先加载该类。
2. Spring Boot环境的准备
在启动类加载完成后,Spring Boot会在应用程序的classpath中查找application.properties或application.yml文件,读取其中的配置信息,然后初始化Spring环境并创建ApplicationContext对象。此外,Spring Boot还会自动扫描所有带有注解的类,并将它们注册到Spring容器中。
3. Spring Boot的自动配置
Spring Boot具有一套智能的自动配置机制,可以根据应用程序所使用的依赖库和配置文件自动配置Spring Bean。例如,如果应用程序中引入了Hibernate,Spring Boot会根据Hibernate的依赖信息自动配置一个SessionFactory Bean。这样,开发人员就无需手动配置这些Bean,可以更加专注于业务逻辑的实现。
4. SpringApplication的启动
当Spring Boot环境准备好之后,就会创建一个SpringApplication对象。该对象负责启动Spring Boot应用程序,并将所有Bean注册到Spring容器中。它还可以接收并处理控制台命令行参数,以及在应用程序启动和关闭时执行一些回调方法。
5. 实例化Web容器
如果应用程序是一个Web应用程序,则Spring Boot会自动实例化嵌入式Web服务器,如Tomcat、Jetty或Undertow等。Spring Boot将创建WebServer对象,并将所有Servlet、Filter和Listener注册到其中。最后,Web容器会启动,并开始监听来自客户端的HTTP请求。如果应用程序不是Web应用程序,则这一步可以略过。
6. 应用程序启动完成
当Web容器启动之后,应用程序就开始监听来自客户端的HTTP请求,并根据配置文件中的路由规则进行处理。此时,应用程序已经启动完成,并可以提供相关的服务。如果应用程序需要结束,可以通过调用SpringApplication对象的close()方法来关闭Spring容器和Web容器并释放资源。
以上就是Spring Boot启动原理的基本流程,整个过程涉及到了多个组件和技术点,包括Java虚拟机、Spring Framework、Web容器等。了解这些原理可以帮助开发者更好地理解和使用Spring Boot。
springboot是基于spring的新型的轻量级框架,最厉害的地方当属自动配置。它可以根据启动流程和相关原理来看看,实现传奇的自动配置
二、springboot的启动类入口
用过springboot的技术人员很显而易见的两者之间的差别就是视觉上很直观的:springboot有自己独立的启动类(独立程序)
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
从上面代码可以看出,Annotation定义(@SpringBootApplication)和类定义(SpringApplication.run)最为耀眼,所以要揭开SpringBoot的神秘面纱,我们要从这两位开始就可以了。
三、单单是SpringBootApplication接口用到了这些注解
@Target(ElementType.TYPE) // 注解的适用范围,其中TYPE用于描述类、接口(包括包注解类型)或enum声明
@Retention(RetentionPolicy.RUNTIME) // 注解的生命周期,保留到class文件中(三个生命周期)
@Documented // 表明这个注解应该被javadoc记录
@Inherited // 子类可以继承该注解
@SpringBootConfiguration // 继承了Configuration,表示当前是注解类
@EnableAutoConfiguration // 开启springboot的注解功能,springboot的四大神器之一,其借助@impo