SpringBoot面试题

简介: SpringBoot面试题


  • springboot是什么?

Springboot概念:

SpringBoot 遵循约定大于配置的原则。定义了一套接口规范,这套规范规定:SpringBoot 在启动时会扫描外部引用jar 包中的META-INF/spring.factories文件,将文件中配置的类型信息加载到 Spring 容器(此处涉及到 JVM 类加载机制与 Spring 的容器加载知识),并执行类中定义的各种操作。对于外部 jar 来说,只需要按照 SpringBoot 定义的标准,就能将自己的功能装置进 SpringBoot。

Springboot优势:

  1. 能够单独运行。无需打包放到tomcat容器中运行,自带tomcat的servlet容器,能够直接运行。
  2. 能够自动配置。通过各种starter组件,将配置项自动配置到容器中,只要依赖就能够使用,这也是“约定大于配置”的具体表现。
  3. 减少配置文件。不再需要xml等配置文件,可以通过注解来实现各种配置。
  4. 新增健康监控。通过actuator和endpoint来实现健康监控。
  • springboot启动过程?

Springboot的启动主要是靠(1)@SpringBootApplication注解、(2)SpringApplication实例化和(3)SpringApplication.run()方法起作用。

@SpringBootApplication注解由以下3个组成:

  1. @SpringBootConfiguration:标注当前类是配置类,将其注入到Spring容器中。
  2. @EnableAutoConfiguration:开启自动配置,将META-INF/spring.factories文件中的配置类加载进来。
  3. @ComponentScan:扫描当前目录和子目录中bean,将其加载进来。

实例化SpringApplication:

  1. 判断是否为web环境;
  2. 设置初始化器;
  3. 设置监听器;
  4. 推断应用的入口类,开始调用run()方法;

SpringApplication.run()方法的流程:

  1. 通过SpringFactorieLoader对象获得SpringApplicationListener,获取监听器。
  2. 初始化Environment对象。
  3. 创造ApplicationContext容器对象,并做初始化。
  4. 查找容器中的CommandLinesRunner和ApplicationRunner,进行初始化操作。
  5. 最后启动ApplicationContext,所有bean对象已经加载到该容器中;
  6. SpringBoot 源码解析 (二)----- Spring Boot精髓:启动流程源码分析:https://www.cnblogs.com/java-chen-hao/p/11829344.html
  7. SpringBoot启动流程是怎样的?:https://juejin.cn/post/6895341123816914958#heading-8
  • springboot自动配置原理?

sprinboot的自动配置主要依靠@EnableAutoConfiguration这个注解,使用这个注解就实现了ImportSelector接口,该接口的主要用途是加载各个starter中/MATE-INF/spring.factories中的配置类,将这些配置类加载到IoC容器中。值得注意的是所有以spring-boot-starter开头的依赖都放在springboot-autoconfig下,所以项目加入以上依赖,只要在properties文件中写好配置项,就会自动配置好,能够直接使用。

@SpringbootApplication由一下3个注解组成:

  1. @SpringBootConfiguration:运行将该注册类直接注入到IoC容器中;
  2. @ComponentScan:允许扫描配置路径的实体类,其中加上了@Controller、@Service、@Component等注解的将其加载到IoC容器中;
  3. @EnableAutoConfiguration:实现springboot自动装载的核心类;
  4. 淘宝一面:“说一下 Spring Boot 自动装配原理呗?”:

https://www.cnblogs.com/javaguide/p/springboot-auto-config.html

  1. 看完就会的SpringBoot自动装配原理:

滑动验证页面

  1. Spring Boot自动装配原理与启动过程详解:

https://juejin.cn/post/6940128900093575198#heading-11

  • springboot的starter的原理?

starter是实现springboot中自动配置的具体形式,在starter目录/MATE-INF/spring.factories配置好需要加载到IoC的配置类信息,springboot-autoconfig会自动来读取该配置项,依靠反射来实例化配置项。

  • springboot启动时候需要运行特定代码方法?

实现ApplicationRunner接口或者实现CommandLineRunner接口。


目录
相关文章
|
5月前
|
Java 应用服务中间件 开发者
Java面试题:解释Spring Boot的优势及其自动配置原理
Java面试题:解释Spring Boot的优势及其自动配置原理
129 0
|
3月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
483 37
|
2月前
|
架构师 Java 开发者
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
在40岁老架构师尼恩的读者交流群中,近期多位读者成功获得了知名互联网企业的面试机会,如得物、阿里、滴滴等。然而,面对“Spring Boot自动装配机制”等核心面试题,部分读者因准备不足而未能顺利通过。为此,尼恩团队将系统化梳理和总结这一主题,帮助大家全面提升技术水平,让面试官“爱到不能自已”。
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
|
6月前
|
消息中间件 缓存 Java
Spring Boot最经典的20道面试题,你都会了吗?
Spring Boot最经典的20道面试题,你都会了吗?
230 0
|
3月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
2月前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
176 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
6月前
|
前端开发 Dubbo Java
spring面试题_spring mvc面试题_springboot面试题库
spring面试题_spring mvc面试题_springboot面试题库
|
6月前
|
设计模式 NoSQL Java
网易面试:SpringBoot如何开启虚拟线程?
虚拟线程(Virtual Thread)也称协程或纤程,是一种轻量级的线程实现,与传统的线程以及操作系统级别的线程(也称为平台线程)相比,它的创建开销更小、资源利用率更高,是 Java 并发编程领域的一项重要创新。 > PS:虚拟线程正式发布于 Java 长期支持版(Long Term Suort,LTS)Java 21(也就是 JDK 21)。 虚拟线程是一种在 Java 虚拟机(JVM)层面实现的逻辑线程,不直接和操作系统的物理线程一一对应,因此它可以减少上下文切换所带来的性能开销。 操作系统线程、普通线程(Java 线程)和虚拟线程的关系如下: ![image.png](https:
83 0
网易面试:SpringBoot如何开启虚拟线程?
|
6月前
|
监控 NoSQL Java
【面试高频 time:】SpringBoot整合Redisson实现分布式锁
【面试高频 time:】SpringBoot整合Redisson实现分布式锁
45 0
|
6月前
|
安全 前端开发 Java
杨校老师课堂之Spring Boot框架面试题【开发工程师面试前必看】
杨校老师课堂之Spring Boot框架面试题【开发工程师面试前必看】
49 0

热门文章

最新文章

下一篇
DataWorks