一.Spring Boot 的核心特性

  1. Spring Boot是一个脚手架,构建与Spring框架基础之上
  2. 基于快速构建理念,提供了自动配置功能,可实现其开箱即用特性(创建完一个基本的项目以后,可零配置或者少量配置即可运行我们的项目)
  3. 起步依赖(Starter Dependency)-项目创建时底层帮你关联依赖。
    自动配置(Auto Configuration)。
    健康检查(Actator)-监控。

二.Spring Boot项目在启动时发生了什么?

SpringBoot面试题

  1. SpringBoot 项目在启动时,首先基于启动入口类上的注解描述,进行自动配置并扫描指定包以及子包中的类进行加载
  2. 检测类上是否有Spring框架中指定的注解描述(例如@Component,@Controller,@Service等),假如有,则将类交给Spring框架中的BeanFactory工厂接口的实现类对象,此工厂对象会基于反射创建Bean的实例,假如此Bean指定了生命周期方法,还会调用生命周期方法
  3. 当实例创建以后,Spring框架还会基于类的作用域描述,将实例存储到不同作用域的容器中。以实现Bean对象的科学应用。
  4. Spring boot启动顺序:查找,加载,读和存储配置,创建和存储实例对象

三.什么是Spring Bean容器?Spring Bean容器与Spring IOC 容器有什么不同吗?

  1. Spring Boot容器就是用于创建bean对象,管理bean对象的那个容器
  2. Spring IOC 容器本质上指的的就是Spring Bean容器,Spring Bean容器中最核心一个机制是IOC机制(控制反转),所以有时候又将springbean容器称之为
    Spring IOC 容器

对IOC和DI的理解:

  1. IOC 是Spring中提供一种控制反转机制,目的是将我们项目中对象的依赖管理交给Spring实现,这样可以更好实现对象关系的解耦,提高程序的可扩展性.
  2. DI 是Spring中的依赖注入机制,IOC的实现需要借助这种机制.我们通常会这样理解,Spring Bean容器中的IOC思想一种目标,DI是实现这种思想的目标的手段.

四.Spring 框架中的Bean对象有什么特性?

SpringBoot面试题

  1. 延迟加载 ( @Lazy(value=true) )
    优点:优化资源使用,(充分利用内存空间)
    缺点:用的时候再创建对象会影响程序的响应速度
  2. 作用域(@Scope注解进行描述)
    优点:让对象在有效的作用域之中使用,尽量控制对象的初始化与销毁,从而实现对象的高效低耗的运行
    缺点:底层框架编写难度加大,可能在不熟练的情况下可能会出现域冲突的问题
  3. 生命周期方法
    @PostConstruct注解,用来描述生命周期初始化方法
    @PreDestroy 注解,用来描述生命周期销毁方法

请解释Spring Bean的生命周期?
Spring Bean的生命周期简单易懂。在一个bean实例被初始化时,需要执行一系列的初始化操作以达到可用的状态。同样的,当一个bean不在被调用时需要进行相关的析构操作,并从bean容器中移除。
Spring bean factory 负责管理在spring容器中被创建的bean的生命周期。Bean的生命周期由两组回调(call back)方法组成。
Spring Bean的作用域之间有什么区别?
Spring容器中的bean可以分为5个范围:

  1. singleton:这种bean范围是默认的,这种范围确保不管接受到多少个请求,每个容器中只有一个bean的实例,单例的模式由bean factory自身来维护。
  2. prototype:原形范围与单例范围相反,为每一个bean请求提供一个实例。
  3. request:在请求bean范围内会每一个来自客户端的网络请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收器回收。
  4. Session:与请求范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效。
  5. global-session:global-session和Portlet应用相关。当你的应用部署在Portlet容器中工作时,它包含很多portlet。如果你想要声明让所有的portlet共用全局的存储变量的话,那么这全局变量需要存储在global-session中。

全局作用域与Servlet中的session作用域效果相同。

五.使用Spring框架有什么好处

  1. Spring 是轻量级框架,基本的版本大约2MB
  2. IOC(控制反转): Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
  3. AOP(面向切面编程): Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。
  4. 容器:Spring 包含并管理应用中对象的生命周期和配置
  5. MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。
  6. 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。

六.Spring Boot整合连接池

  1. 实际开发中应用程序与数据库交互时,“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采用连接池技术来重用连接
    SpringBoot面试题
  2. 整合HiKariCP连接池
    HiKariCP号称是目前世界上最快的连接池,有江湖一哥的称号,目前在springboot工程默认推荐使用HiKariCP连接池

七.Mybatis的基本工作流程

  1. 读取配置文件,配置文件包含数据库连接信息和Mapper映射文件或者Mapper包路径

八.Spring Boot 整合MyBatis框架

  1. Mybatis是一个优秀的持久层框架,底层基于JDBC实现与数据库的交互。并在JDBC操作的基础上做了封装和优化,它借助灵活的SQL定制,参数及结果集的映射方式,更好的适应了当前互联网技术的发展。Mybatis框架的简单应用架构
    SpringBoot面试题
  2. 在互联网应用中项目,mybatis框架通常会由spring框架进行资源整合,作为数据层技术实现数据交互操作。
  3. 数据持久化
    ●持久化就是将程序的数据在持久状态和瞬时状态转化的过程
    ●内存:断电即失
    ●数据库(Jdbc), IO文件持久化。
    持久层就是,有些对象.数据,不让它丢失

九.MyBatis应用动态SQL解决了什么问题

  1. 固定的sql语句不能够满足我们的应用需求。这个时候需要在标准的基础上建立动态的查询语句。
  2. Mybatis提供了多种注解,可以提供动态查询语言。
  3. SpringBoot面试题
    MyBatis应用中#与:get有什么异同点: 相同点:都是通过get来获取值的 不同点:传进去的字符串不带引号 #号带引号

十.描述Spring MVC处理流程及应用优势

SpringBoot面试题

  1. 客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配前端控制器(或分发器/DispatcherServlet)的请求映射路径, web容器将请求转交给DispatcherServlet.
  2. DipatcherServlet接收到这个请求之后将根据请求的信息以及处理器映射 器(HandlerMapping)的配置找到处理请求的处理器(Handler)。
  3. 由具体的处理器适配器(HandlerAdapter)对Handler进行具体的调用。
  4. Handler对数据处理完成以后将返回一个ModelAndView()对象给 DispatcherServlet。
  5. DispatcherSevlet通过视图解析器(ViewResolver)将ModelAndView()转 化为真正的视图View。
  6. Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端。

相关文章:

  • 2022-12-23
  • 2021-11-19
  • 2022-01-17
  • 2021-08-19
  • 2021-11-02
  • 2022-02-21
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案