Springboot的常见面试题

目录

  • 前言
  • 1. springboot比spring好在哪
  • 2. 配置文件有哪几种格式
  • 3. 核心注解有哪几个
  • 4. 启动时候的自动装配
  • 5. 监听器是什么
  • 6. 可以使用xml文件配置么
  • 7. 解决跨域问题
  • 8. 如何维护接口服务
  • 9. 如何实现分页
  • 10. 如何实现session共享

前言

主要总结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 中的代理过滤器实现,操作还是比较方便的

你可能感兴趣的:(八股文,springboot,spring,java)