300道SpringBoot⾯试题及答案(2022年最新整理)
2022最新SpringBoot⾯试题【附答案解析】SpringBoot⾯试题及答案2022,SpringBoot2022最新⾯试题及答案,SpringBoot⾯试题新答案已经全部更新完了,有些答案是⾃⼰总结的,也有些答案是在⽹上搜集整理的。这些答案难免会存在⼀些错误,仅供⼤家参考。如果发现错误还望⼤家多多包涵,不吝赐教,
谢谢~
如果不背 SpringBoot⾯试题的答案,肯定⾯试会挂!
这套SpringBoot⾯试题⼤全,希望对⼤家有帮助哈~
我们都知道,新创建⼀个 SpringBoot 项⽬,默认都是有 parent 的,这个 parent 就是 spring-boot-starter-parent ,spring-boot-starter-parent 主要有如下作⽤:
1、 定义了 Java 编译版本为 1.8 。
2、 使⽤ UTF-8 格式编码。
3、 继承⾃ spring-boot-dependencies,这个⾥边定义了依赖的版本,也正是因为继承了这个依赖,所以我们在写依赖时才不需要写版本号。
4、 执⾏打包操作的配置。
5、 ⾃动化的资源过滤。
6、 ⾃动化的插件配置。
7、 针对 application.properties 和 l 的资源过滤,包括通过 profile 定义的不同环境的配置⽂件,例如 application-dev.properties 和 l。
cas和oauth是⼀个解决单点登录的组件,shiro主要是负责权限安全⽅⾯的⼯作,所以功能点不⼀致。但往往需要单点登陆和权限控制⼀起来使⽤,所以就有 cas+shiro或者oauth+shiro这样的组合。
token⼀般是客户端登录后服务端⽣成的令牌,每次访问服务端会进⾏校验,⼀般保存到内存即可,也可以放到其他介质;Redis可以做Session共享,如果前端web服务器有⼏台负载,但是需要保持⽤户登录的状态,这场景使⽤⽐较常见。
我们公司使⽤oauth+shiro这样的⽅式来做后台权限的管理,oauth负责多后台统⼀登录认证,shiro负责给登录⽤户赋予不同的访问权限。
1、 Spring
Spring最重要的特征是依赖注⼊。所有 SpringModules 不是依赖注⼊就是 IOC 控制反转。
当我们恰当的使⽤ DI 或者是 IOC 的时候,我们可以开发松耦合应⽤。松耦合应⽤的单元测试可以很容易的进⾏。
2、 Spring MVC
Spring MVC 提供了⼀种分离式的⽅法来开发 Web 应⽤。通过运⽤像 DispatcherServelet,MoudlAndView 和 ViewResolver 等⼀些简单的概念,开发 Web 应⽤将会变的⾮常简单。
3、 SpringBoot
Spring 和 SpringMVC 的问题在于需要配置⼤量的参数。
SpringBoot 通过⼀个⾃动配置和启动的项来⽬解决这个问题。为了更快的构建产品就绪应⽤程序,SpringBoot 提供了⼀些⾮功能性特征。
spring ioc注解1、 ⽤来简化spring应⽤的初始搭建以及开发过程 使⽤特定的⽅式来进⾏配置(properties或yml⽂件)
2、 创建独⽴的spring引⽤程序 main⽅法运⾏
3、 嵌⼊的Tomcat ⽆需部署war⽂件
4、 简化maven配置
1、 继承spring-boot-starter-parent项⽬
2、 导⼊spring-boot-dependencies项⽬依赖
YAML是⼀种⼈类可读的数据序列化语⾔。它通常⽤于配置⽂件。 与属性⽂件相⽐,如果我们想要在配置⽂件中添加复杂的属性,YAML ⽂件就更加结构化,⽽且更少混淆。可以看出YAML具有分层配置数据。
Spring Profiles允许⽤户根据配置⽂件(dev,test,prod等)来注册bean。因此,当应⽤程序在开发中运⾏时,只有某些bean可以加载,⽽在PRODUCTION中,某些其他bean可以加载。假设我们的要求是Swagger⽂档仅适⽤于QA环境,并且禁⽤所有其他⽂档。这可以使⽤配置⽂件来完成。SpringBoot使得使⽤配置⽂件⾮常简单。
在源⽂件夹下,创建⼀个名为 static 的⽂件夹。然后,你可以把你的静态的内容放在这⾥⾯。
例如,myapp.js 的路径是 resources\static\js\myapp.js
你可以参考它在 jsp 中的使⽤⽅法:
错误:HAL browser gives me unauthorized error - Full authenticaition is required to access this resource.
该如何来修复这个错误呢?
两种⽅法:
⽅法 1:关闭安全验证
application.properties
abled:FALSE
⽅法⼆:在⽇志中搜索密码并传递⾄请求标头中
SpringBoot 可以通过 @PropertySource,@Value,@Environment, @ConfigurationProperties 来绑定变量。
SpringBoot 推荐使⽤ Java 配置⽽⾮ XML 配置,但是 SpringBoot 中也可以使⽤ XML 配置,通过 注解可以引⼊⼀个 XML 配置。
1
SpringBoot启动的时候通过@EnableAutoConfiguration注解到META-INF/spring.factories配置⽂件中所有的⾃动配置类,并对其进⾏加载,⽽这些⾃动配置类的类名都是以AutoConfiguration结尾来命
名的,它实际上就是⼀个javaConfig形式的Spring容器配置类,它们都有⼀个@EnableConfigurationPerperties的注解,通过这个注解启动XXXProperties命名的类去加载全局配置中的属性,如server.port,⽽XXXProperties通过@ConfigurationProperties注解将全局配置⽂件中的属性与⾃⼰的属性进⾏绑定。
1
1、 properties⽂件
2、YAML⽂件
3、系统环境变量
4、命令⾏参数
1
1、 调⽤prepareEnvironment⽅法去设置环境变量
2、 接下来有三个⽅法getOrCreateEnvironment,configureEnvironment,environmentPrepared
3、 getOrCreateEnvironment去初始化系统环境变量
4、 configureEnvironment去初始化命令⾏参数
5、 environmentPrepared当⼴播到来的时候调⽤onApplicationEnvironmentPreparedEvent⽅法去使⽤postProcessEnvironment⽅法load yml和properties变量
1
1、 打包⽤命令或者者放到容器中运⾏
2、 ⽤ Maven/ Gradle 插件运⾏
3、 直接执⾏ main ⽅法运⾏
1
跨域可以在前端通过 JSONP 来解决,但是 JSONP 只可以发送 GET 请求,⽆法发送其他类型的请求,在 RESTful 风格的应⽤中,就显得⾮常鸡肋,因此我们推荐在后端通过 (CORS,Cross-origin resource sharing) 来解决跨域问题。这种解决⽅案并⾮ SpringBoot 特有的,在传统的 SSM 框架中,
就可以通过 CORS 来解决跨域问题,只不过之前我们是在 XML ⽂件中配置 CORS ,现在可以通过实现WebMvcConfigurer接⼝然后重写addCorsMappings⽅法解决跨域问题。
public class CorsConfig implements WebMvcConfigurer {
@Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*")
.allowCredentials(true) .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .maxAge(3600); }
}
1
在引⽤log4j之前,需要先排除项⽬创建时候带的⽇志,因为那个是Logback,然后再引⼊log4j的依赖,引⼊依赖之后,去
src/main/resources⽬录下的log4j-spring.properties配置⽂件,就可以开始对应⽤的⽇志进⾏配置使⽤。
1
打包⽤命令或者放到容器中运⾏
1、 打成jar包,使⽤java -jar xxx.jar运⾏
2、 打成war包,放到tomcat⾥⾯运⾏
直接⽤maven插件运⾏ maven spring-boot:run
直接执⾏main⽅法运⾏
1
Spring JavaConfig是Spring社区的产品,它提供了配置Spring IoC容器的纯Java⽅法。因此它有助于避免使⽤XML配置。使⽤JavaConfig的优点在于:
⾯向对象的配置。由于配置被定义为JavaConfig中的类,因此⽤户可以充分利⽤Java中的⾯向对象功能。⼀个配置类可以继承另⼀个,重写它的@Bean⽅法等。
减少或消除XML配置。基于依赖注⼊原则的外化配置的好处已被证明。但是,许多开发⼈员不希望在
XML和Java之间来回切换。
JavaConfig为开发⼈员提供了⼀种纯Java⽅法来配置与XML配置概念相似的Spring容器。
从技术⾓度来讲,只使⽤JavaConfig配置类来配置容器是可⾏的,但实际上很多⼈认为将JavaConfig与XML混合匹配是理想的。
类型安全和重构友好。JavaConfig提供了⼀种类型安全的⽅法来配置Spring容器。由于Java 5.0对泛型的⽀持,现在可以按类型⽽不是按名称检索bean,不需要任何强制转换或基于字符串的查
1
1、 打包⽤命令或者放到容器中运⾏
2、 ⽤ Maven/ Gradle 插件运⾏
3、 直接执⾏ main ⽅法运⾏
1、 spring-boot-starter-web :提供 Spring MVC + 内嵌的 Tomcat 。
2、 spring-boot-starter-data-jpa :提供 Spring JPA + Hibernate 。
3、 spring-boot-starter-data-Redis :提供 Redis 。
4、 mybatis-spring-boot-starter :提供 MyBatis 。
2
好消息是你可以定制它。点击链接“转到完整版本”。你可以配置你想要修改的包名称!
2
.properties 和 .yml,它们的区别主要是书写格式不同。
properties
app.user.name = javastack
yml
app: user: name: javastack
2
Swagger ⼴泛⽤于可视化 API,使⽤ Swagger UI 为前端开发⼈员提供在线沙箱。Swagger 是⽤于⽣成 RESTful Web 服务的可视化表⽰的⼯具,规范和完整框架实现。它使⽂档能够以与服务器相同的速度更新。当通过 Swagger 正确定义时,消费者可以使⽤最少量的实现逻辑来理解远程服务并与其进⾏交互。因此,Swagger消除了调⽤服务时的猜测。
2
单纯做 SpringBoot 开发,可能不太容易遇到 bootstrap、properties 配置⽂件,但是在结合 Spring Cloud 时,这个配置就会经常遇到了,特别是在需要加载⼀些远程配置⽂件的时侯。
spring boot 核⼼的两个配置⽂件:
bootstrap (、 yml 或者 、 properties):boostrap 由⽗ ApplicationContext 加载的,⽐ applicaton 优先加载,配置在应⽤程序上下⽂的引导阶段⽣效。⼀般来说我们在 Spring Cloud 配置就会使⽤这个⽂件。且 boostrap ⾥⾯的属性不能被覆盖;
application (、 yml 或者 、 properties): 由ApplicatonContext 加载,⽤于 spring boot 项⽬的⾃动化配置。
2
这个问题并不难,但⾯试官总是以此测试候选⼈的专业知识。
Spring Initializer是⼀个⽹络应⽤程序,它可以⽣成⼀个SpringBoot项⽬,包含快速启动所需的⼀切。和往常⼀样,我们需要⼀个好的项⽬框架;它有助于你正确创建项⽬结构/框架。
2
SpringBoot 在启动的时候会⼲这⼏件事情:
1、 SpringBoot 在启动时会去依赖的 Starter 包中寻 resources/META-INF/spring.factories ⽂件,然后根据⽂件中配置的 Jar 包去扫描项⽬所依赖的 Jar 包。
2、 根据 spring.factories 配置加载 AutoConfigure 类
3、 根据 注解的条件,进⾏⾃动配置并将 Bean 注⼊ Spring Context
总结⼀下,其实就是 SpringBoot 在启动的时候,按照约定去读取 SpringBoot Starter 的配置信息,再根据配置信息对资源进⾏初始化,并注⼊到 Spring 容器中。这样 SpringBoot 启动完毕后,就已经准备好了⼀切资源,使⽤过程中直接注⼊对应 Bean 资源即可。
这只是简单的三连环问答,不知道有多少同学能够完整的回答出来。
其实 SpringBoot 中有很多的技术点可以挖掘,希望可以在后期的⾯试中帮助到⼤家。
更多SpringBoot最新2021年⾯试题及答案
SpringBoot最新2022年⾯试题及答案,汇总版
01、 SpringBoot有哪些优点?
02、 如何使⽤SpringBoot实现分页和排序?
03、 能否举⼀个例⼦来解释更多 Staters 的内容?
04、 如何使⽤ SpringBoot ⾃动重装我的应⽤程序?
05、 创建⼀个 SpringBoot Project 的最简单的⽅法是什么?
06、 Spring Cache 三种常⽤的缓存注解和意义?
07、 什么是Spring Actuator?它有什么优势?
08、 什么是 Spring Profiles?
09、 如何使⽤ SpringBoot 部署到不同的服务器?
10、 如何重新加载SpringBoot上的更改,⽽⽆需重新启动服务器?
SpringBoot最新⾯试题及答案附答案汇总
01、 什么是WebSockets?
02、 什么是SpringBoot?
03、 如何集成 SpringBoot 和 ActiveMQ?
04、 SpringBoot 2.X 有什么新特性?与 1.X 有什么区别?
05、 什么是YAML?
06、 SpringBoot 的核⼼注解是哪个?它主要由哪⼏个注解组成的?
07、 保护 SpringBoot 应⽤有哪些⽅法?
08、 如何在不使⽤BasePACKAGE过滤器的情况下排除程序包?
09、 微服务中如何实现 session 共享 ?
10、 如何实现 SpringBoot应⽤程序的安全性?
SpringBoot最新⾯试题,2021年⾯试题及答案汇总
01、 什么是 JavaConfig?
02、 SpringBoot多数据源拆分的思路
03、 前后端分离,如何维护接⼝⽂档 ?
04、 什么是 Spring Data?
05、 什么是 SpringBoot?
06、 SpringBoot如何实现打包
07、 Spring、SpringBoot、SpringMVC的区别?
08、 你如何理解 SpringBoot 中的 Starters?
09、 您使⽤了哪些 starter maven 依赖项?
10、 什么是 JavaConfig?
如果不背 SpringBoot⾯试题的答案,肯定⾯试会挂!
这套SpringBoot⾯试题⼤全,希望对⼤家有帮助哈~
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论