springboot启动原理流程?(springboot容器启动时可以通过哪些类进行资源初始化?)
1.springboot启动原理流程?
Springboot是基于spring的一个新的轻量级框架,最厉害的地方是自动配置。可以根据启动流程和相关原理查看,实现传说中的自动配置。
二、springboot的启动类入口
对于使用过springboot的技术人员来说显而易见的是,两者的区别在视觉上是很直观的:springboot有自己独立的启动类(独立程序)。
@SpringBootApplication
公共类应用程序{
公共静态void main(String[] args) {
spring application . run(application . class,args);
}
}
从上面的代码可以看出,注释定义(@SpringBootApplication)和类定义(SpringApplication.run)是最耀眼的,所以要揭开SpringBoot的神秘面纱,就要从这两个开始。
第三,只有SpringBootApplication接口使用这些注释。
@Target(ElementType。TYPE) //批注范围,其中TYPE用于描述类、接口(包括包批注类型)或枚举声明。
@ retention(保留策略。runtime)//注释的生命周期保存在类文件中(三个生命周期)。
半岛平台@ documentated//表示此评论应该由javadoc记录。
子类@Inherited //可以继承这个注释。
@SpringBootConfiguration //继承Configuration,表示当前是一个注释类。
@EnableAutoConfiguration //借助@impo开启springboot四大神器之一springboot的标注功能。
Spring Boot是Spring Framework的扩展,它简化了Spring应用程序的开发和部署过程,并提供了一种快速创建可以独立运行的Spring应用程序的方法。以下是Spring Boot启动原理的简单流程:
1.开始加载主类。
Spring Boot应用的启动类是一个Java类,包含main()方法,是整个应用的入口。在启动过程中,Java虚拟机(JVM)首先加载该类。
2.Spring Boot环境的准备
加载启动类后,Spring Boot将在应用程序的类路径中查找application.properties或application.yml文件,读取其中的配置信息,然后初始化Spring环境并创建ApplicationContext对象。此外,Spring Boot将自动扫描所有带注释的类,并将它们注册到Spring容器中。
3.Spring Boot的自动配置
Spring Boot有一个智能的自动配置机制,可以根据应用程序使用的依赖库和配置文件自动配置Spring Bean。例如,如果在应用程序中引入Hibernate,Spring Boot将根据Hibernate的依赖信息自动配置一个SessionFactory Bean。这样,开发人员不需要手动配置这些Bean,并且可以将更多的精力放在业务逻辑的实现上。
4.弹簧应用的开始
当Spring Boot环境准备就绪时,将创建一个SpringApplication对象。该对象负责启动Spring Boot应用程序,并在Spring容器中注册所有Bean。它还可以接收和处理控制台命令行参数,并在应用程序启动和关闭时执行一些回调方法。
5.实例化Web容器
如果应用程序是一个Web应用程序,Spring Boot将自动实例化一个嵌入式Web服务器,如Tomcat、Jetty或Undertow。Spring Boot将创建一个WebServer对象,并在其中注册所有的Servlet、过滤器和监听器。最后,Web容器将启动并开始监听来自客户端的HTTP请求。如果应用程序不是Web应用程序,可以跳过这一步。
6.应用程序已经启动。
当Web容器启动时,应用程序将开始侦听来自客户端的HTTP请求,并根据配置文件中的路由规则处理它们。此时,应用程序已经启动,可以提供相关服务。如果应用需要结束,可以通过调用SpringApplication对象的close()方法,关闭Spring容器和Web容器,释放资源。
以上是Spring Boot启动原理的基本流程,整个过程涉及到很多组件和技术点,包括Java虚拟机、Spring框架、Web容器等等。理解这些原则可以帮助开发人员更好地理解和使用Spring Boot。
2.启动springboot容器时,哪些类可以用于资源初始化?
当Spring Boot容器启动时,可以通过以下类初始化资源:
ApplicationRunner和CommandLineRunner接口实现类:它们允许在应用程序启动后执行自定义代码,这些代码可用于初始化资源或执行特定任务。
@PostConstruct annotation:通过将此注释添加到方法中,可以在Bean初始化后执行自定义初始化逻辑。
Spring的事件机制:可以发布自定义事件,然后使用@EventListener注释监听这些事件,并执行相应的初始化操作。
自定义Spring Bean:您可以创建一个自定义Spring Bean,并在其构造函数或初始化方法中执行资源初始化。
这些方法提供了在Spring Boot容器启动时初始化和定制资源的各种方法。
当Spring Boot容器启动时,可以通过ApplicationContext类的initApplicationContext静态方法初始化资源。
该方法接受String[] args参数,该参数表示在Spring Boot应用程序启动时传递给Spring MVC应用程序的参数。
在参数中,我们可以通过传递由特定类定义的BeanFactory对象来初始化资源。
例如,我们可以定义一个资源接口,然后通过BeanFactory实例实例化该接口的实现。这样,我们可以轻松地管理Spring Boot容器中的资源。