springboot面试题整理

springboot启动原理

Spring Boot的启动原理主要可以分为两个部分:Spring Boot自身的启动过程和Spring应用程序的启动过程。Spring Boot自身的启动过程主要包括以下四个步骤:

  1. 加载启动类:Spring Boot会尝试从classpath根目录下查找并加载启动类,即添加了@SpringBootApplication注解的类。当找到启动类后,Spring Boot会通过Java反射机制创建一个Spring容器。
  2. 扫描注解:Spring Boot会扫描启动类及其子包中的所有类,并根据已定义的注解(如@Controller、@Service等)来判断哪些类是需要被注入到Spring容器中的Bean。
  3. 注册Bean:Spring Boot会通过反射机制将所有带有注解的类实例化为Bean,并注册到Spring容器中。在此过程中,Spring Boot会对注入的Bean进行依赖注入和AOP增强等操作。
  4. 启动服务:最后,Spring Boot会启动Web服务器,并将已经注册到Spring容器中的Bean发布为可供外界调用的服务。
  • 在Spring Boot启动完成后,就可以通过Web服务的URL路径来访问相关的Spring Controller接口,执行各种具体的业务逻辑处理。
  • 除了Spring Boot自身的启动过程,还有Spring应用程序的启动过程。在这个过程中,Spring Boot会读取应用程序配置文件(application.properties/application.yml),并根据配置文件中定义的配置来管理应用程序中各种组件的实例化、注入和管理。
  • 总体来说,Spring Boot的启动过程是在Spring Framework的基础上进一步简化和自动化,让开发人员能够专注于具体的业务逻辑实现,从而提高了开发效率和代码可维护性。

springboot生命周期

Spring Boot的生命周期包括以下几个阶段:

  1. 构造阶段:在该阶段,Spring Boot会实例化启动类,并准备应用程序环境,包括读取配置文件等操作。
  2. 初始化阶段:在该阶段,Spring Boot将扫描应用程序中的所有Bean,并创建Bean的实例,并执行Spring生命周期的初始化方法(例如@PostConstruct)。
  3. 运行阶段:在该阶段,应用程序已经启动并正常运行,包括应用程序的初始化、Web服务器的启动等操作。
  4. 停止阶段:在该阶段,Spring Boot将执行正在运行的应用程序的终止操作,包括关闭Web服务器、关闭数据库连接等操作。
  • 在Spring Boot应用程序的构造阶段,Spring Boot将执行以下操作:
  1. 启动Spring容器,并读取Bean定义文件。
  2. 解析Bean之间的依赖关系。
  3. 实例化Bean,并执行Bean的初始化方法。 在Spring 应用程序的初始化阶段,Spring Boot将执行以下操作:
  4. 扫描所有的XML配置文件和Java配置文件,加载所有的Bean定义。
  5. 对配置文件中的属性进行解析,并作为属性注入到相应的Bean中。
  6. 实例化所有的Bean,并将其注入到相应的对象中。
  • 在Spring Boot应用程序的运行阶段,Spring Boot将执行以下操作:
  1. 启动Web服务器,并将Spring应用程序注册为Servlet。
  2. 接收HTTP请求,并将请求转发到相应的Controller。
  3. 处理HTTP请求,并向客户端返回HTTP响应。
  • 在Spring Boot应用程序的停止阶段,Spring Boot将执行以下操作:
  1. 关闭Web服务器,停止接收HTTP请求。
  2. 断开数据库连接、释放资源。
  3. 执行Application Context的Lifecycle-stop()和ContextClosedEvent。
  • 总而言之,Spring Boot的生命周期非常类似于Spring Framework的生命周期,但是会添加一些额外的启动和停止阶段,以支持更加自动化的应用程序配置和管理。

speingboot自动装配原理

Spring Boot的自动装配是通过探测和自动配置机制来实现的。其原理可以概括为以下几个步骤:

  1. 扫描classpath下的所有META-INF/spring.factories文件。
  2. 根据spring.factories中配置的自动装配类,进行自动装配。
  3. 完成自动装配后,容器中就包含了所有的Bean。
  • 具体过程如下:
  1. Spring Boot会扫描所有classpath下的META-INF/spring.factories文件,以获取所有的自动配置类。
  2. Spring Boot会为这些自动配置类创建一个自动配置上下文,该上下文独立于应用程序的上下文,并允许自动配置类准确地控制自动配置过程。
  3. Spring Boot自动配置类会进行条件化配置,在符合某些特定条件时才会使用相应的配置。例如,当我们使用了某些特定的库和框架时,自动配置类才会将它们添加到应用程序上下文中。
  4. Spring Boot会根据自动配置类中的声明,自动选择和配置相应的Bean,注册到Spring应用程序上下文中。
  5. 如果需要自定义配置,可以使用Spring Boot提供的@ConfigurationProperties注解,将应用程序配置文件中的属性注入到自定义配置类中,并对配置类进行相应的定制。
  • 通过这种自动化的配置机制,Spring Boot可以仅仅通过类路径下的META-INF/spring.factories文件,探测并自动配置所需的Bean,大大简化了配置的工作,提高了开发效率。

说说spring的bean的实例化过程

在Spring容器中,Bean的实例化过程主要可以分为以下三个阶段:

  1. 定位:在这个阶段,Spring容器会根据配置文件中的具体信息来确定每个要被管理的Bean。这通常涉及到读取XML文件或其他格式的配置文件,以及执行注解扫描等操作,从而确定每个Bean的定义(BeanDefinition);
  2. 实例化:在这个阶段,Spring容器会根据BeanDefinition的信息创建出真正的Bean对象。这通常会涉及到调用构造方法、属性注入以及执行初始化方法等操作,并将这些操作封装入BeanWrapper对象中。
  3. 注册:在这个阶段,Spring容器会将创建好的Bean对象注册到BeanFactory中,并保存其关键信息(如Bean的名称、类名、作用域、属性等)。以便在需要时能够从BeanFactory中获取这些Bean对象。

具体地,Bean实例化的过程经历以下几个步骤:

  1. 调用构造方法创建Bean实例:Spring会调用Bean对象的构造方法来创建该对象的实例。通过构造器注入或者Setter注入来完成各个属性的注入。
  2. 调用Bean的setter方法注入依赖:在创建Bean实例之后,Spring会根据XML配置或者Java注解配置的信息,自动调用对象的setter()方法或者直接注入属性来完成对象中所有的依赖关系的注入。
  3. 调用Bean的初始化方法(可选):如果Bean对象实现了InitializingBean接口、或者在XML配置文件中使用init-method指定了Bean的初始化方法,则Spring会在Bean容器加载完成后,自动调用该方法。
  4. Bean对象注入到容器:在上述步骤完成之后,Spring会将已经创建好,初始化好的Bean对象注册到容器中并提供访问,以供程序使用。

总之,在Spring容器中,Bean的实例化过程是一个高度自动化的过程,主要有Spring容器完成了Bean的创建、初始化和注入等操作,使得应用程序可以更加专注于业务逻辑的处理。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值