Spring部分概念要点总结

一、IOC(Inversion of Control)

1.概念

IOC即控制反转,将设计好的对象交给容器控制,而不是在对象内部控制。
借助IOC容器,可以使各对象之间解耦。

2.实现方式

也叫做依赖注入(DI),共有三种方式:

  1. 接口注入
  2. Construct注入
  3. Setter注入

3.实现方法

其核心是在系统运行中,由IOC容器动态的向某个对象提供所需对象。实现依赖注入的方式是反射,其具体方法是:

  1. 定义用来描述Bean配置的Java类
  2. 解析Bean配置,Spring采用HashMap来存储BeanDefination对象
  3. 遍历取出配置信息,通过反射实例化对象,保存在另一个Map中

4.IOC的优势

  1. 降低类之间的耦合
  2. 倡导面向接口编程
  3. 提高系统可插入,可测试,可修改的特性

二、AOP(Aspect Oriented Programming)

AOP即面向切面编程,在程序某处切开,注入定义的接口(将一些公用行为封装成接口模块)。

1.原理

1.静态代理

若代理类在程序运行前就已经存在,那么这种代理方式被成为静态代理,这种情况下的代理类通常都是我们在Java代码中定义的。

2.动态代理

代理类在程序运行时创建的代理方式被成为动态代理。也就是说,这种情况下,代理类并不是在Java代码中定义的,而是在运行时根据我们在Java代码中的“指示”动态生成的。

  1. JDK动态代理:通过反射接收被代理的类,被代理的类必须实现一个借口
  2. CGLIB动态代理:若没有实现接口,SpringAOP会用CGLIB动态生成子类

2.应用场景

权限、缓存、内容传递、错误处理、懒加载、调试、跟踪、优化、同步、事务

3.切点

1.连接点

程序执行的某个特定位置,Spring仅支持方法连接点,如方法的调用前、调用后。

2.切点

查询条件,根据切点查找对应的连接点,一个切点可以匹配多个连接点。

3.增强

织入到目标类连接点上的一段程序代码。

4.引介

可以为类添加一些属性和方法,即使一个类原来没有实现某些功能,通过引介可以动态的添加接口的逻辑,使其成为接口的实现类。
可以在编译器/运行时/装载期织入。

5.切面

由切点和增强组成。

三、 Spring模块结构

文章作者: Lufer
文章链接: https://coder.lufer.cc/2019/08/09/Spring部分概念要点总结/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Lufer
支付宝打赏
微信打赏