【JAVA面试】Spring容器的启动流程

这篇具有很好参考价值的文章主要介绍了【JAVA面试】Spring容器的启动流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章先作为初版,等后续时间充足后,补充更深的内容


Spring容器的启动流程

一、流程

当启动Spring容器时,会按照以下步骤进行:

扫描并注册Bean定义:Spring容器会扫描指定的包或目录,查找带有特定注解(如@Component、@Service、@Repository等)的类。它会创建对应的BeanDefinition对象,包含了Bean的元数据信息,并将这些BeanDefinition对象存储在一个Map中。

预处理Bean定义:在注册Bean定义后,Spring容器会对Bean定义进行预处理操作。这包括合并父子类的BeanDefinition,解析属性占位符,处理自动装配等。

实例化非懒加载的单例Bean:Spring容器会遍历所有非懒加载的单例BeanDefinition,并根据BeanDefinition创建相应的Bean实例。这涉及到实例化Bean、属性填充和依赖注入等操作。

初始化Bean:在单例Bean实例化后,Spring容器会调用各个Bean的初始化方法。这可以包括自定义的初始化逻辑,如初始化数据库连接、加载配置文件等。还可以执行BeanPostProcessor的前置初始化方法。

注册BeanPostProcessor:Spring容器会注册实现了BeanPostProcessor接口的Bean后处理器。这些后处理器可以在Bean实例化和初始化的过程中对Bean进行增强,如AOP代理、属性填充等。注册后处理器之后,会执行BeanPostProcessor的后置初始化方法。

完成启动过程当所有非懒加载的单例Bean都被实例化、初始化完成后,Spring容器的启动过程结束。此时,可以发布容器启动事件,通知相关的监听器

二、注意事项

上述流程中的细节和执行顺序可能会因为Spring的版本和配置方式的不同而有所差异。在实际开发中,还可以通过扩展点如BeanFactoryPostProcessor、@Import注解等来定制和影响Spring容器的启动流程,满足特定的需求。文章来源地址https://www.toymoban.com/news/detail-438613.html


到了这里,关于【JAVA面试】Spring容器的启动流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决:docker创建Redis容器成功,但无法启动Redis容器、也无报错提示

    1.修改redis.conf配置文件参数 daemonize 为 no : 由于创建容器实例时,会进行容器数据卷挂载,因此可以直接在外部宿主机里面修改,docker会自动同步该文件到redis容器对应目录里面 2.删除之前创建的redis容器实例 3.复杂使用run命令,再次重新创建redis容器实例。会进行容器数据卷

    2024年02月20日
    浏览(51)
  • spring启动流程 (6完结) springmvc启动流程

    SpringMVC的启动入口在SpringServletContainerInitializer类,它是ServletContainerInitializer实现类(Servlet3.0新特性)。在实现方法中使用WebApplicationInitializer创建ApplicationContext、创建注册DispatcherServlet、初始化ApplicationContext等。 SpringMVC已经将大部分的启动逻辑封装在了几个抽象WebApplicationInitia

    2024年02月16日
    浏览(45)
  • spring启动流程 (1) 流程概览

    本文将通过阅读AnnotationConfigApplicationContext源码,分析Spring启动流程。 核心的启动逻辑都在refresh方法中。 定义了多个register方法,用于向Spring容器注册BeanDefinition。 在创建AnnotatedBeanDefinitionReader时,会向容器注册几个注解驱动处理器: org.springframework.context.annotation.internalConf

    2024年02月11日
    浏览(40)
  • 一篇文章带你搞懂spring6的概念、spring入门与容器IoC详解(尚硅谷笔记)

    Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由“Spring 之父”Rod Johnson 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring 框架

    2023年04月16日
    浏览(39)
  • spring启动流程 (2) Bean实例化流程

    本文通过阅读Spring源码,分析Bean实例化流程。 上一篇文章已经介绍,Bean实例化入口在AbstractApplicationContext类的finishBeanFactoryInitialization方法: 返回指定beanName的(原始)单例对象,如果没有则创建一个新对象: 创建Bean实例、填充属性、调用后置处理器等:

    2024年02月11日
    浏览(81)
  • Spring Boot 启动流程

    加载配置 Spring Boot在启动时会加载应用程序的配置文件(例如application.properties或application.yml),并将其转化为内部的配置对象。 创建应用程序上下文 Spring Boot会创建一个应用程序上下文(ApplicationContext),它是Spring框架的核心容器。应用程序上下文负责管理Bean的生命周期和

    2024年02月06日
    浏览(50)
  • 【框架源码】手写Spring框架IOC容器核心流程

    要是想要了解Spring IOC底层,首先我们就得先了解什么是IOC。 IOC就是控制反转,把对象创建和对象之间的调用过程交给Spring进行管理。 使用IOC目的就是之前我们创建对象的方式都是用new的方式创建,这个方式有个缺点,被创建对象的类的位置一旦被改动,new就会报错,类与类

    2024年02月06日
    浏览(56)
  • SpringBoot 底层机制分析【Tomcat 启动+Spring 容器初始化+Tomcat 如何关联Spring 容器】【下】

    😀前言 本篇博文是关于SpringBoot 底层机制分析实现,希望能够帮助你更好的了解SpringBoot 😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉 💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客

    2024年02月13日
    浏览(45)
  • Spring Boot启动流程简析

    文章首发地址 可以穿件独立的Spring应用程序,可以创建可执行的jars 内嵌tomcat或jetty等Servlet容器 提供“入门”依赖项,以简化构建配置。尽可能自动配置Spring和第三方库 提供可用于生产的功能,例如指标、运行状况检查和外部化配置 了解基本的启动注解 AnnotationUtil.java,该

    2024年02月16日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包