# 切面拦截 ## 引言 一般来讲,AOP功能都是通过动态代理一类的机制实现的,而本框架可以与Spring框架相结合,直接依靠Spring实现动态代理AOP。 然而,我这里可就不一定都是依靠动态代理啦,日后针对于特定功能模块的AOP会越来越多,实现方式也肯定千变万化。 <br> 不过我目前没有打算去依赖cglib并实现一个真正的可以针对所有类的动态代理AOP功能。 毕竟,目前已经可以做到与SpringBoot这样的框架进行相性优良的整合,你完全可以将这种传统AOP功能的实现任务交给Spring去完成而不是等着我用我拙劣的代码技艺去造一个更加低劣的轮子来用。 <br> 所有于切面拦截相关的类同样应当标注@Beans注解。 ## 上下文 一般来讲,大部分拦截都会提供一个对应的 **上下文对象** 以供实现各种操作,他们的特征一般是以`Context`结尾,并且继承了`BaseContext`抽象类。而`BaseContext`则为大多数的上下文对象提供了一些公共API。我将会列举这些API,且不会在其他实现了此类的上下文对象描述中复述这些API。 | API | 类型 | 描述 | | --- | --- | --- | | `getValue()` | 方法 | 获取当前上下文中保存的值,具体类型以具体的上下文对象为主。 | | `setValue(T)` | 方法 | 设置当前上下文中保存的值,具体类型以具体的上下文对象为主。 | | `get(String)` | 方法 | 获取一个保存在当前上下文中的值 | | `set(String, Object)` | 方法 | 向当前上下文中保存一个值 | | `put(String, Object)` | 方法 | 同上 | | `getGlobal(String)` | 方法 | 获取一个保存在全局上下文中的值 | | `setGlobal(String, Object)` | 方法 | 向全局上下文中保存一个值 | | `clear()` | 方法 | 清除当前上下文中保存的所有值 | | `clearGlobal()` | 方法 | 清除全局上下文中保存的所有值 | | `clearAll()` | 方法 | 清除所有上下文中保存的所有值 |