一.Spring Boot 的核心特性
- Spring Boot是一个脚手架,构建与Spring框架基础之上
- 基于快速构建理念,提供了自动配置功能,可实现其开箱即用特性(创建完一个基本的项目以后,可零配置或者少量配置即可运行我们的项目)
- 起步依赖(Starter Dependency)-项目创建时底层帮你关联依赖。
自动配置(Auto Configuration)。
健康检查(Actator)-监控。
二.Spring Boot项目在启动时发生了什么?
- SpringBoot 项目在启动时,首先基于启动入口类上的注解描述,进行自动配置并扫描指定包以及子包中的类进行加载
- 检测类上是否有Spring框架中指定的注解描述(例如@Component,@Controller,@Service等),假如有,则将类交给Spring框架中的BeanFactory工厂接口的实现类对象,此工厂对象会基于反射创建Bean的实例,假如此Bean指定了生命周期方法,还会调用生命周期方法
- 当实例创建以后,Spring框架还会基于类的作用域描述,将实例存储到不同作用域的容器中。以实现Bean对象的科学应用。
- Spring boot启动顺序:查找,加载,读和存储配置,创建和存储实例对象
三.什么是Spring Bean容器?Spring Bean容器与Spring IOC 容器有什么不同吗?
- Spring Boot容器就是用于创建bean对象,管理bean对象的那个容器
- Spring IOC 容器本质上指的的就是Spring Bean容器,Spring Bean容器中最核心一个机制是IOC机制(控制反转),所以有时候又将springbean容器称之为
Spring IOC 容器
对IOC和DI的理解:
- IOC 是Spring中提供一种控制反转机制,目的是将我们项目中对象的依赖管理交给Spring实现,这样可以更好实现对象关系的解耦,提高程序的可扩展性.
- DI 是Spring中的依赖注入机制,IOC的实现需要借助这种机制.我们通常会这样理解,Spring Bean容器中的IOC思想一种目标,DI是实现这种思想的目标的手段.
四.Spring 框架中的Bean对象有什么特性?
-
延迟加载 ( @Lazy(value=true) )
优点:优化资源使用,(充分利用内存空间)
缺点:用的时候再创建对象会影响程序的响应速度 -
作用域(@Scope注解进行描述)
优点:让对象在有效的作用域之中使用,尽量控制对象的初始化与销毁,从而实现对象的高效低耗的运行
缺点:底层框架编写难度加大,可能在不熟练的情况下可能会出现域冲突的问题 -
生命周期方法
@PostConstruct注解,用来描述生命周期初始化方法
@PreDestroy 注解,用来描述生命周期销毁方法
请解释Spring Bean的生命周期?
Spring Bean的生命周期简单易懂。在一个bean实例被初始化时,需要执行一系列的初始化操作以达到可用的状态。同样的,当一个bean不在被调用时需要进行相关的析构操作,并从bean容器中移除。
Spring bean factory 负责管理在spring容器中被创建的bean的生命周期。Bean的生命周期由两组回调(call back)方法组成。
Spring Bean的作用域之间有什么区别?
Spring容器中的bean可以分为5个范围:
- singleton:这种bean范围是默认的,这种范围确保不管接受到多少个请求,每个容器中只有一个bean的实例,单例的模式由bean factory自身来维护。
- prototype:原形范围与单例范围相反,为每一个bean请求提供一个实例。
- request:在请求bean范围内会每一个来自客户端的网络请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收器回收。
- Session:与请求范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效。
- global-session:global-session和Portlet应用相关。当你的应用部署在Portlet容器中工作时,它包含很多portlet。如果你想要声明让所有的portlet共用全局的存储变量的话,那么这全局变量需要存储在global-session中。
全局作用域与Servlet中的session作用域效果相同。
五.使用Spring框架有什么好处
- Spring 是轻量级框架,基本的版本大约2MB
- IOC(控制反转): Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
- AOP(面向切面编程): Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。
- 容器:Spring 包含并管理应用中对象的生命周期和配置
- MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。
- 事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
六.Spring Boot整合连接池
- 实际开发中应用程序与数据库交互时,“获得连接”或“释放资源”是非常消耗系统资源的两个过程,为了解决此类性能问题,通常情况我们采用连接池技术来重用连接
- 整合HiKariCP连接池
HiKariCP号称是目前世界上最快的连接池,有江湖一哥的称号,目前在springboot工程默认推荐使用HiKariCP连接池
七.Mybatis的基本工作流程
- 读取配置文件,配置文件包含数据库连接信息和Mapper映射文件或者Mapper包路径
八.Spring Boot 整合MyBatis框架
- Mybatis是一个优秀的持久层框架,底层基于JDBC实现与数据库的交互。并在JDBC操作的基础上做了封装和优化,它借助灵活的SQL定制,参数及结果集的映射方式,更好的适应了当前互联网技术的发展。Mybatis框架的简单应用架构
- 在互联网应用中项目,mybatis框架通常会由spring框架进行资源整合,作为数据层技术实现数据交互操作。
- 数据持久化
●持久化就是将程序的数据在持久状态和瞬时状态转化的过程
●内存:断电即失
●数据库(Jdbc), IO文件持久化。
持久层就是,有些对象.数据,不让它丢失
九.MyBatis应用动态SQL解决了什么问题
- 固定的sql语句不能够满足我们的应用需求。这个时候需要在标准的基础上建立动态的查询语句。
- Mybatis提供了多种注解,可以提供动态查询语言。
-
MyBatis应用中#与传进去的字符串不带引号 #号带引号
十.描述Spring MVC处理流程及应用优势
- 客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配前端控制器(或分发器/DispatcherServlet)的请求映射路径, web容器将请求转交给DispatcherServlet.
- DipatcherServlet接收到这个请求之后将根据请求的信息以及处理器映射 器(HandlerMapping)的配置找到处理请求的处理器(Handler)。
- 由具体的处理器适配器(HandlerAdapter)对Handler进行具体的调用。
- Handler对数据处理完成以后将返回一个ModelAndView()对象给 DispatcherServlet。
- DispatcherSevlet通过视图解析器(ViewResolver)将ModelAndView()转 化为真正的视图View。
- Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端。