首页 > 其他分享 >springboot自动配置原理-面试题

springboot自动配置原理-面试题

时间:2024-08-20 21:24:56浏览次数:15  
标签:面试题 调用 springboot 对象 应用程序 注解 原理 解析 方法

网络上看很多文章并没什么用,重点没说到,不知道从那里入手讲,刷到的直接按照下面这个,背出来就行了


1、当启动springboot应用程序的时候,会先创建SpringApplication的对象,在对象的构造方法中会进行某些参数的初始化工作,最主要的是判断当前应用程序的类型以及初始化器和监听器,在这个过程中会加载整个应用程序中的spring.factories文件,将文件的内容放到缓存对象中,方便后续获取。
2、SpringApplication对象创建完成之后,开始执行run方法,来完成整个启动,启动过程中最主要的有两个方法,第一个叫做prepareContext,第二个叫做refreshContext,在这两个关键步骤中完整了自动装配的核心功能,前面的处理逻辑包含了上下文对象的创建,banner的打印,异常报告期的准备等各个准备工作,方便后续来进行调用。


3、在prepareContext方法中主要完成的是对上下文对象的初始化操作,包括了属性值的设置,比如环境对象,在整个过程中有一个非常重要的方法,叫做load,load主要完成一件事,将当前启动类做为一个beanDefinition注册到registny中,方便后续在进行BeanFactoryPostProcessor调用执行的时候,找到对应的主类,来完成@SpringBootApplicaiton,@EnableAutoConfiguration等注解的解析工作


4、在refreshContext方法中会进行整个容器刷新过程,会调用中spring中的refresh方法,refresh中有13个非常关键的方法,来完成整个spring应用程序的启动,在自动装配过程中,会调用invokeBeanFactoryPostProcessor方法,在此方法中主要是对ConfigurationClassPostProcessor类的处理,这次是BFPP的子类也是BDRPP的子类,在调用的时候会先调用BDRPP中的postProcessBeanDefinitionRegistry方法,然后调用postProcessBeanFactory方法,在执行postProcesseanDefinitionRegistry的时候回解析处理各种注解,包含@PropertySource,@ComponentScan,@ComponentScans,@Bean,@Import等注解,最主要的是@lmport注解的解析


5、在解析@lmport注解的时候,会有一个getlmports的方法,从主类开始递归解析注解,把所有包含@Import的注解都解析到,然后在processlmport方法中对lmport的类进行分类,此处主要识别的时候AutoConfigurationlmportSelect归属于lmportSelect的子类,在后续过程中会调用deferredlmportSelectorHandler中的process方法,来完整EnableAutoConfiguration的加载.

标签:面试题,调用,springboot,对象,应用程序,注解,原理,解析,方法
From: https://blog.csdn.net/hexu_blog/article/details/141368839

相关文章

  • 基于springboot万里学院摄影社团管理系统(源码+文档+调试+讲解)
    收藏关注不迷路!!......
  • springboot怎么配置多个yml文件
    目录方式一:多个yml文件方式二:单个yml文件方式三:在pom.xml中指定环境配置掌握方式一就够了,方式二、三可以不看以下三种方式都可以实现多环境的配置。在application.yml主配置文件中做项目通用的配置,在其他配置文件中做不同环境下的配置,以避免重复配置的情况。方式......
  • mvc原理与依赖注入
    <?//模型层:当前页面要显示的数据$pdo=newPDO('mysql:host=localhost;dbname=16','root','3.1415926',[PDO::ATTR_ERRMODE=>PDO::ERRMODE_WARNING]);$users=$pdo->query('SELECT`id`,`gender`,`uname`,`c_time`FROM`user`order......
  • 【2025毕设热门选题】《基于SpringBoot+Vue的校园资产管理系统》功能规划和开题报告
    博主介绍:8年资深码农、211小硕,全网10万+粉丝。文科生转码,所以非常懂小白学习历程。java领域优质创作者,擅长小白基础课程教学和项目讲解辅导。专注于Java技术领域和大学生毕业项目实战讲解已经5年,服务10000+小白客户。技术范围:自己手撸SpringBoot、Vue、javaweb网站、小程......
  • 想做硬件,三极管放大电流原理你必须懂
    三极管的电流放大原理是基于其内部结构和电流分配机制来实现的。这一原理主要涉及三个电极:发射极(E)、基极(B)和集电极(C),以及它们之间的相互作用。以下是三极管电流放大原理的详细解析:一、三极管的结构三极管由两个PN结组成,即发射结和集电结,它们分别由发射极与基极之间、基极与集......
  • Java笔试面试题AI答之线程(2)
    文章目录7.如何确保N个线程可以访问N个资源同时又不导致死锁?1.资源排序与顺序访问2.资源分配策略3.避免占用并等待4.引入超时机制5.死锁检测与解决6.使用高级并发工具7.编程实践8.Java方法可以同时即是static又是synchronized的吗?9.什么是Java多线程同步?10......
  • webpack 热更新实现原理
    修改entry配置首先通过启动webpack-dev-server会修改webpack.config.js的entry配置,新增两个入口文件:webpack-dev-server/client/index.jswebpack/hot/dev-server.jswebpack-dev-server/client/index.js包含的是客户端向服务端通信的相关代码。webpack/hot/dev-s......
  • XSS 基本概念和原理介绍
    XSS基本概念和原理介绍基本概念跨站脚本攻击XSS(CrossSiteScripting),为了不和层叠样式表(CascadingStyleSheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意JavaScript代码,当用户浏览该页面时,嵌入在Web里面的JS代码会被解......
  • SpringBoot Bean工具类 普通类环境中获取Bean
    通过实现BeanFactoryPostProcessor和ApplicationContextAware接口,可以在Spring容器启动时注入BeanFactory和ApplicationContext。importorg.springframework.aop.framework.AopContext;importorg.springframework.beans.BeansException;importorg.springframework.bean......
  • 【工具使用】【SpringBoot】【P6spy】P6spy 的使用
    1 前言今儿在看 HikariCP数据库连接池实战我主要是想看下,连接的管理、连接的获取及释放。但是看到第五章的时候,书中提到P6spy,说是能很容易监控到JDBC中执行的SQL语句。那我们平时SpringBoot微服务对数据的操作,不管是JDBCTemplate、还是Mybatis、Hibernate最后的落点......