关于spring:Spring-面试题整理

0次阅读

共计 2575 个字符,预计需要花费 7 分钟才能阅读完成。

Spring

什么是 Spring 框架?

Spring 是一个轻量级的 IOC 和 AOP 容器框架。是为 Java 应用程序提供基础性服务的一套框架,目标是用于简化企业应用程序的开发,它使得开发者只须要关怀业务需要。常见的配置形式有三种:基于 XML 的配置、基于注解的配置、基于 Java 的配置。

次要由以下几个模块组成:

  1. Spring Core:外围类库,提供 IOC 服务;
  2. Spring Context:提供框架式的 Bean 拜访形式,以及企业级性能(JNDI、定时工作等);
  3. Spring AOP:AOP 服务;
  4. Spring DAO:对 JDBC 的形象,简化了数据拜访异样的解决;
  5. Spring ORM:对现有的 ORM 框架的反对;
  6. Spring Web:提供了根本的面向 Web 的综合个性,例如多方文件上传;
  7. Spring MVC:提供面向 Web 利用的 Model-View-Controller 实现。

如何了解 Spring 的 AOP?

AOP 能够说是对 OOP 的补充和欠缺。OOP 引入封装、继承和多态性等概念来建设一种对象层次结构,用以模仿公共行为的一个汇合。当咱们须要为扩散的对象引入公共行为的时候,OOP 则显得无能为力。也就是说,OOP 容许你定义从上到下的关系,但并不适宜定义从左到右的关系。例如日志性能。日志代码往往程度地分布在所有对象档次中,而与它所分布到的对象的外围性能毫无关系。在 OOP 设计中,它导致了大量代码的反复,而不利于各个模块的重用。
AOP 是面向切面编程,将程序中的穿插业务逻辑(比方平安,日志,事务等),封装成一个切面,而后注入到指标对象(具体业务逻辑)中去。

AOP 的实现形式

织入:指代码切入到指标函数的过程,例如 aspectJ 到 java 程序的过程称为织入。

动态 AOP

在编译期,切面间接以字节码的模式编译到指标字节码文件中。
AspectJ 属于动态 AOP,是在编译时进行加强,会在编译的时候将 AOP 逻辑织入到代码中,须要专有的编译器和织入器。

动静 AOP

实现原理是为被代理的业务接口生成代理类,将 AOP 逻辑写入到代理类中,在运行时动静织入 AOP,应用反射执行织入的逻辑。
次要实现形式依赖 java.lang.reflect 包下的 InvocationHandler 和 Proxy 类。

  • 长处:Java 规范库原生反对,应用简略,无需援用额定的包。绝对于动态 AOP 更灵便。
  • 毛病:带代理的类必须是接口,灵活性受到一些限度;应用反射会影响一些性能。

动静代码字节生成

CGLib 是动静代码字节生成的实现,它封装字节码生成工具 Asm,原理是在运行期间指标字节码加载后,生成指标类的子类,将切面逻辑退出到子类中,所以应用 Cglib 实现 AOP 不须要基于接口。

  • 长处:没有接口也能够织入,灵活性高。
  • 毛病:扩大类的实例办法为 final 时,则无奈进行织入。

自定义类加载器

在运行前,指标加载前,将切面逻辑加到指标字节码中。

IOC

在传统的开发模式下,咱们都是采纳间接 new 一个对象的形式来创建对象,也就是说你依赖的对象间接由你本人管制,然而有了 IOC 容器后,则间接由 IoC 容器来管制。所以“谁管制谁”,当然是 IoC 容器管制对象。

MVC

MVC 指 MVC 模式的某种框架,它强制性的使应用程序的输出、解决和输入离开。应用 MVC 应用程序被分成三个核心部件:模型、视图、控制器。它们各自解决本人的工作.

Model(模型)用于解决应用程序数据逻辑的局部。通常模型对象负责在数据库中存取数据。

View(视图)解决数据显示的局部。通常视图是根据模型数据创立的。

Controller(控制器)解决用户交互的局部。通常控制器负责从视图读取数据,管制用户输出,并向模型发送数据。它使视图与模型分来到。

Spring MVC

Spring MVC 框架次要由 DispatcherServlet、处理器映射、控制器、视图解析器、视图组成.

Spring MVC 的工作流程如下:

  1. 客户端申请提交到 DispatcherServlet。
  2. 由 DispatcherServlet 控制器寻找一个或多个 HandlerMapping,找到解决申请的 Controller。
  3. DispatcherServlet 将申请提交到 Controller。
  4. Controller 调用业务逻辑解决后返回 ModelAndView 给 DispatcherServlet。
  5. DispatcherServlet 寻找一个或多个 ViewResolver 视图解析器,找到 ModelAndView 指定的视图。
  6. 视图负责将模型结果显示到客户端。

Spring MVC 接口

在图 1 中蕴含 4 个 Spring MVC 接口,即 DispatcherServlet(前端控制器)、HandlerMapping、Controller 和 ViewResolver(视图解析器)。

DispatcherServlet:Spring MVC 所有的申请都通过 DispatcherServlet 来对立散发,在 DispatcherServlet 将申请分发给 Controller 之前须要借助 Spring MVC 提供的 HandlerMapping 定位到具体的 Controller。

HandlerMapping:接口负责实现客户申请到 Controller 映射。

Controller:解决用户申请。一旦 Controller 解决完用户申请,将返回 ModelAndView 对象给 DispatcherServlet 前端控制器,ModelAndView 中蕴含了模型(Model)和视图(View)。示意模型应该映射到哪个视图上,但传递的视图名并不间接示意某个特定的 JSP,仅仅传递了一个逻辑名称,这个名字将用来查找产生后果的真正视图。DisPatcherServlet 将会应用视图解析器来将逻辑视图名匹配微一个特定的视图实现。

从宏观角度思考,DispatcherServlet 是整个 Web 利用的控制器;从宏观思考,Controller 是单个 Http 申请处理过程中的控制器,而 ModelAndView 是 Http 申请过程中返回的模型(Model)和视图(View)。

ViewResolver(视图解析器):在 Web 利用中负责查找 View 对象,从而将相应后果渲染给客户。

参考资料

  1. https://blog.csdn.net/qq_3433…
  2. https://www.cnblogs.com/stanl…
正文完
 0