​Spring​​ 核心机制

  1. ​Spring Context​
  2. ​Spring AOP​
  3. ​Spring IOC​
  4. ​Spring Core​



(1)Spring Context


​ApplicationContext​​的作用:

  • 标示一个应用环境
  • 利用​​BeanFactory​​​创建​​Bean​​对象
  • 保存对象关系表
  • 能够捕获各种事件

​Context​​是一个 bean 关系的集合,又叫 IOC 容器




(2)AOP


允许程序通过分离的应用业务逻辑与系统级别服务

原理

通过动态代理

1. JDK 动态代理

利用反射机制生成一个实现代理接口的匿名类

代理对象在程序运行时产生,而不是编译期

  1. 对代理对象的所有接口方法调用哦都会转发到​​InvocationHandler.invoke()​
  2. 通过反射调用被拦截方法
  3. ​Spring​​​的 AOP 主要基于 JDK 的​​dynamic proxy​​​,通过​​advisor​​​实现链式的调用,通过​​cglib​​第三方法库也可以实现

事务管理抽象层建立在 AOP 基础上。

所以需要在方法上必须是公开的,​​@Transactional​

2. cglib
  1. 动态生成一个要代理的子类,在子类中采用方法拦截的技术 拦截所有父类方法的调用。
  2. 底层使用字节码处理框架​​ASM​​​,来转换字节码并生成新的类,不能对​​final​​ 方法进行代理。



(3)IOC


依赖注入(DI)和 控制反转(IOC)是同一概念。

原理

通过 工厂 + 反射,将 bean 放在容器中,当想用某个 bean 的时候,只需要调用 ​​getBean("beanID")​​方法。




(4)Core


​core​​​ 是发现、建立和维护每个 bean 之间的关系所需要的一系列工具
​​​core​​​ 定义了资源的访问方式,并由​​ResourceLoader​​接口完成资源加载