跳至主要內容

1、Spring相关

KindBrave大约 1 分钟

Spring是一个开源的、轻量的Java开发框架,意在提高Java开发人员的开发效率。Spring的两大特点就是控制反转和面向切片

Spring的模块包括Core、Data Access、Web、Test、AOP等等。

1.Spring/SpringMVC/SpringBoot的区别

2.IoC/DI/IoC实现机制?

3.AOP

Spring中AOP是一个重要的概念。我们知道,传统的开发方式包括面向过程编程和面向对象编程。比如,我们想要实现一个动物类,让它有吃和跑的能力,这是一个纵向的过程。但是,如果说我们想要给每个方法加上一些日志功能等等,传统的纵向编程显得比较复杂,需要在每个方法中都去写相同的日志功能。所以,这种功能更加适合横向开发,也就是更加适合用AOP操作。

Spring中的AOP是通过动态代理的方式实现的。有关AOP的一些概念如下:

  • 切面:如果说类是对事物功能的抽象,那么切面就是对不同事物中相同功能的抽象,比如说日志
  • 连接点:作为拦截的条件,在Spring中一般来说是一个方法
  • 切点:对连接点进行定位
  • 通知:拦截成功后的操作
  • 织入:将操作添加到连接点的过程,可以分为三种:
    • 编译时织入
    • 类加载时织入
    • 运行时织入

3.1 AOP的环绕方式

  • 前置通知
  • 后置通知
  • 返回通知
  • 异常通知
  • 环绕通知:运行前后都执行

3.2 两种动态代理

4.Spring用到了哪些设计模式

  • 工厂模式
  • 单例模式
  • 代理模式
  • 适配器模式
  • 观察者模式
  • 模板模式