每一个框架都自己核心思想,现在我就记录一下Spring的核心思想AOP
代理
简述
代理模式就是通过提供一个代理类,让我们调用目标方法的时候,不直接在目标方法里进行调用附加方法,而是通过代理类间接的调用。让不属于核心逻辑的代码从目标方法中剥离出来。
这样的好处就是让附加方法有利于统一维护。
静态代理
优点:可以在不修改目标对象的前提下扩展目标对象的功能。
缺点:冗余:代理对象要实现与目标对象一致的接口,会产生过多的代理类。不易维护:一旦接口增加方法,目标对象和代理对象都要进行修改、
动态代理
方式:
接口:JDK动态代理。
继承:Cglib、Javassist动态代理。
就是利用反射机制,进行实现的。方便,便于进行维护。
AOP
概述
AOP: 面向切面编程,利用AOP可以对业务逻辑的各个部分进行分离,让业务逻辑部分之间的耦合度降低。
作用
- 简化代码:将固定位置的重复代码抽取出来。
- 代码增强:将特定的功能封装起来,哪里需要便织入哪里。
AOP的了解语句
横切关注点
从每个方法中抽取出来的同一类的非核心业务。
附加方法中有10个附加功能,就有10个横切关注点。
通知
每一个横切关注点的实现叫做 通知
- 前置通知:在被代理的目标方法前执行
- 返回通知:在被代理的目标方法成功结束后执行
- 异常通知:在被代理的目标方法异常结束后执行
- 后置通知:在被代理的目标方法最终结束后执行
- 环绕通知:使用try-catch-finally结构围绕整个被代理的目标方法
切面
封装通知方法的类
目标
被代理的目标对象
代理
向目标对象加上通知后创建的代理对象
连接点
程序是从上到下执行的,我们的增强代码时横切进去的,这个交汇点就是连接点
切入点
定位连接点的方式