Springboot的常见面试题

简介: springboot自动装配:自动把第三方的组件自动装载到ioc容器中,不需要开发人员再去写bean相关的一个配置。在springboot的启动类上,只需要在启动类上加上@SpringbootApplication注解就可以实现主动装配,本身是一个复合注解,真正实现自动装配的注解@EnableAutoConfiguration。自动装配主要依靠三个核心的关键技术。引入starter,启动依赖主键(主键包含一个@Configuration配置类(在这个配置类中,需要通过bean去声明需要装载到ioc容器

前言

主要总结springboot中常见的面试题
关于其他框架的面试题,可看我该专栏下的其他模块

1. springboot比spring好在哪

  • springboot简化Spring,使用properties和yml来替代xml文件,抛弃了冗余的xml文件
  • 嵌入了http服务器以及多种插件
  • 简化配置(spring-boot-starter-web 启动器自动依赖其他组件,简少了 maven 的配置)
  • 自动配置
  • 应用监控
  • 无需部署war文件

对比spring家族系列
Spring和Spring MVC要配置大量的参数
SpringBoot通过一个自动配置和启动的项就可解决

2. 配置文件有哪几种格式

yml和properties文件

举个列子:

  • .properties
user.name = 码农研究僧
  • .yml(.yml 格式不支持 @PropertySource 注解导入配置)
user:name : 码农研究僧

3. 核心注解有哪几个

  • @SpringBootConfiguration(组合@Configuration注解,实现配置文件的功能)

在上面这个注解中有以下这个注解

  • @EnableAutoConfiguration(自动装配)
  • @ComponentScan(Spring组件扫描)

4. 启动时候的自动装配

说到springboot,其实最重要的原理有一个是自动装配
而且在面试中也是经常面试到的一个高频问题

自动装配:自动把第三方的组件自动装载到ioc容器中,不需要开发人员再去写bean相关的一个配置。在springboot的启动类上,只需要在启动类上加上@SpringbootApplication注解就可以实现主动装配,本身是一个复合注解,真正实现自动装配的注解@EnableAutoConfiguration。自动装配主要依靠三个核心的关键技术。

  • 引入starter,启动依赖主键(主键包含一个@Configuration配置类(在这个配置类中,需要通过bean去声明需要装载到ioc容器里面的bean对象))
  • 配置类是放在第三方的jar包里,通过springboot的约定优于配置的这个理念,将配置类的全路径放在了classpath中(springboot就可知道其位置)。上面的知识其实是spring中的springFactoriesLoader来完成
  • 有了配置类的jar包后,再通过spring提供的ImportSelector接口来实现对这些配置类的动态加载,从而完成自动装配

5. 监听器是什么

actuator监控当前的一个状态,通过HTTPURL访问的REST端点来检查状态

6. 可以使用xml文件配置么

默认是支持java配置
如果非要使用xml文件,可以通过@ImportResource 注解

7. 解决跨域问题

关于什么是跨域
可以通过该链接进行了解:
什么是跨域?跨域解决方法

跨域问题可以通过CORS进行解决
实现WebMvcConfigurer接口然后重写addCorsMappings方法解决跨域问题

本身一个http请求服务中,流程是过滤器,拦截器
可以将其跨域的相关代码放置在过滤器中

8. 如何维护接口服务

本身springboot是微服务架构
前后端分离的时候如何维护其接口更改

可以通过使用swagger生成接口文档网址,即使有更改,可以获取最新的接口

本身swagger是可视化的ui,通常用于生成RESTful Web服务的可视化表示的工具

9. 如何实现分页

像mybatis使用的是pagehelper的插件

而springboot可以使用Spring Data-JPA
调用这个类的方法 org.springframework.data.domain.Pageable传递给存储库

10. 如何实现session共享

微服务框架架构之间的session被分割开了

可以将其session保存在redis中,当有微服务对其读取的时候,可以操作redis的session就可实现session共享
本身SpringSession基于Spring 中的代理过滤器实现,操作还是比较方便的

相关文章
|
5天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
|
2月前
|
Java 应用服务中间件 开发者
Java面试题:解释Spring Boot的优势及其自动配置原理
Java面试题:解释Spring Boot的优势及其自动配置原理
96 0
|
5天前
|
缓存 前端开发 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版)
|
3月前
|
消息中间件 缓存 Java
Spring Boot最经典的20道面试题,你都会了吗?
Spring Boot最经典的20道面试题,你都会了吗?
62 0
|
3月前
|
前端开发 Dubbo Java
spring面试题_spring mvc面试题_springboot面试题库
spring面试题_spring mvc面试题_springboot面试题库
|
4月前
|
Java 应用服务中间件 API
京东面试:SpringBoot同时可以处理多少请求?
Spring Boot 作为 Java 开发中必备的框架,它为开发者提供了高效且易用的开发工具,所以和它相关的面试题自然也很重要,咱们今天就来看这道经典的面试题:SpringBoot同时可以处理多少个请求 ? 准确的来说,Spring Boot 同时可以处理多少个请求,并不取决于 Spring Boot 框架本身,而是取决于其内置的 Web 容器(因为 Web 容器的行为,决定了 Spring Boot 的行为,所以咱们姑且认为两个问题的回答是一样的)。 ## 1.Web三大容器 Web 容器目前也是三分天下,市面上最常见的三种 Web 容器分别是:Tomcat、Undertow 和 Jet
56 1
京东面试:SpringBoot同时可以处理多少请求?
|
3月前
|
设计模式 NoSQL Java
网易面试:SpringBoot如何开启虚拟线程?
虚拟线程(Virtual Thread)也称协程或纤程,是一种轻量级的线程实现,与传统的线程以及操作系统级别的线程(也称为平台线程)相比,它的创建开销更小、资源利用率更高,是 Java 并发编程领域的一项重要创新。 > PS:虚拟线程正式发布于 Java 长期支持版(Long Term Suort,LTS)Java 21(也就是 JDK 21)。 虚拟线程是一种在 Java 虚拟机(JVM)层面实现的逻辑线程,不直接和操作系统的物理线程一一对应,因此它可以减少上下文切换所带来的性能开销。 操作系统线程、普通线程(Java 线程)和虚拟线程的关系如下: ![image.png](https:
50 0
网易面试:SpringBoot如何开启虚拟线程?
|
3月前
|
监控 NoSQL Java
【面试高频 time:】SpringBoot整合Redisson实现分布式锁
【面试高频 time:】SpringBoot整合Redisson实现分布式锁
29 0
|
3月前
|
安全 前端开发 Java
杨校老师课堂之Spring Boot框架面试题【开发工程师面试前必看】
杨校老师课堂之Spring Boot框架面试题【开发工程师面试前必看】
37 0
|
4月前
|
安全 Java 数据库
Spring boot 入门教程-Oauth2,java面试基础题核心
Spring boot 入门教程-Oauth2,java面试基础题核心