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