Spring Boot高频题

1.什么是Spring?

宏观上来说,是Spring帮我们构建的整个生态圈。

微观上来说,就是我们平时所说的SSM中的Spring框架,在官网中就是Spring FrameWork框架

2.什么是Spring Boot?

Spring Boot是一个高层框架,它的底层就是我们的Spring Framework,帮我们整合整个地Spring开发技术栈,使我们免于写那么多繁重的配置,无需掌握怎么将这些技术配置整合到一起,总结起来就是一句话:约定大于配置。

3.Spring Boot的优点?

创建独立的Spring应用内嵌web服务器(可以嵌入服务器,不需要打包为war包)自动stater依赖,简化构建配置自动配置Spring以及第三方功能提供生产级别的监控,健康检测以及外部化配置无代码生成,无需编写SML

4.Spring Boot的缺点?

人称版本帝,迭代快,需要时刻关注变化封装太深,内部原理复杂,不容易精通

5.什么是微服务?

微服务是一种架构风格,一个应用拆分为一组小型服务,每个服务运行在自己的进程内,也就是可独立部署和升级。各个服务之间使用轻量级HTTP交互,服务围绕业务功能进行拆分,可以由全自动部署机制独立部署,服务自治。服务之间可以使用不同的语言、不同的存储技术。

6.Spring Boot两大特性?

依赖管理、自动配置

7.什么是场景启动器?

场景启动器Stater是一组依赖的集合描述,在我们的项目中,无需关注各种依赖,只需要导入一个场景启动器即可。Spring Boot官方提供的场景启动器命名为:spring-boot-stater-xxx。第三方提供的场景启动器命名为:xxx-spring-boot-stater。

8.Spring Boot 2.0基于Spring 5.2以后,@Configuration注解多了一个属性proxyBeanMethods,京简单介绍它的作用

Full(全配置):proxyBeanMethods = true

容器中会保存有一个配置类的代理对象,每次调用配置类方法,都会去容器中来获取具体的组件对象

Lite(轻量级配置):proxyBeanMethods = false

容器中不会保存配置类的代理对象,每次调用配置类方法,都会重新创建一个新的对象

9.Full模式和Lite模式各自的使用场景?

如果我们编写的容器中的组件,并没有依赖于别的组件,那就可以使用Lite模式进行配置,这样项目启动加载速度都会提高。

如果我们编写的容器中的组件,依赖于其他组件,我们就用Full模式进行配置,因为这样才能保证对象依赖的是容器中的组件,而不是每次调用方法,对象所以来的组件就由重新创建一个。

10.Lite轻量级模式的优点?

Spring Boot会跳过检查容器中有没有该组件对象,加快项目的运行速度。如果是全模式,外部每次调用方法,Spring Boot都回来检查容器中对象,消耗项目运行时间。

11.Spring Boot中bean的注册顺序?

在Spring Ioc的过程中,优先解析@Component,@Service,@Controller注解的类。

其次解析配置类,也就是@Configuration标注的类。

最后开始解析配置类中定义的bean。

12.我们使用SpringBoot开发某个场景,比如web场景,只需要使用web场景启动器即可。其他场景的组件并不会被添加到容器中,Spring Boot是如何做到的?

使用条件装配@Conditional注解,SpringBoot底层有大量的@Conditional的子类来进行各条件判断,比如通过判断项目中是否导入了场景启动器中的某些类,如果导入了,就让当前场景的所有组件生效,添加到IOC中,其他没有导入场景启动器的场景下的组件就不会生效。

13.是不是所有函数式接口,在new内部类时都可以使用lombda表达式?

不是。

lambda表达式虽然也是一种语法糖,但它和匿名内部类还是不同的,lambda编译后不会生成class文件,也就略过了类的加载,验证,解析等。相当于是在运行时再进行响应的操作,因此,在Spring注入过程中,注入含确定类型的入参和出参方法的实现类,会出现无法确定类型的bug,导致注入失败。从而SpringBoot启动失败。所以在Spring注入过程中是不能使用lambda表达式来代替内部类的。

14.简单说说什么是Rest?Resfful风格请求?

rest:(representational state transfer)表述性状态转移,是一种架构风格。

restful:遵守了rest原则的web服务,restful是由rest派生的。

之前编写请求路径是:/user/add,每次请求都需要做add等描述

使用restful风格的请求路径是:/user;指定get方法,为获取用户等,这样就没有必要做描述了。

15.Rest架构请求的优点?

1.前后端分离,减少流量

2.安全问题集中在接口上,由于接收json和格式,防止了注入型等安全问题

3.前后端无关化,后端只负责数据处理,前端表现方式可以是任何形式的语言

4.前端和后端人员更加专注各自的开发,只需要接口文档便可以完成交互,无需过多了解

5.服务器性能优化;由于前端是静态页面,通过nginx便可以获取,服务器主要压力放在了接口上

16.Thymeleaf模板引擎优缺点?

优点:面向后端开发人员,语法非常简单,非常贴近jsp,上手非常快

缺点:并不是一个高性能的模板引擎,如果要做一个高并发,最好还是前后端分离的项目,还是让前端人员去开发页面,或者要开发一个后端的能处理高并发的,那么最好还是选取其他的模板引擎。如果项目只是一个简单的单体应用,那么可以来使用它。

17.Filter,Interceptor几乎拥有相同的功能,它们各自有什么好处?

Filter是Servlet定义的原生组件,好处是:脱离Spring应用也可以使用

Interceptor是Spring定义的接口,可以使用Spring的自动装配等功能

18.Spring Boot在多环境下是如何加载多个配置文件中的配置?

SpringBoot默认加载application配置文件,如果application配置文件中激活了其他环境,那么application配置文件和激活的配置文件都会被加载,如果两者中有同名配置项,那么以激活的配置文件为主。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值