Spring:Aop面向切面编程

来源:互联网 发布:4399盗号软件 编辑:程序博客网 时间:2024/05/22 17:00
大家都知道aop是spring中的一个核心,那么是否真正的了解过呢,带大家来简单的熟悉aop

---------------------------------------------------分割线---------------------------------------------------------------------------------------------

AOP 面向切面编程,一种软件工程的编程方式
AOP经典应用:性能见识、事务管理、安全检查(权限管理)、缓存等
SpringAOP使用纯Java实现,不需要专门的编译过程和类加载器,在运行期通过代理方式向目标类织入增强代码

基本概念

1、连接点(Joinpoint):具有特定功能的方法,一般方法(类中的方法)
2、切入点(Pointcut):具有共性功能的方法的统称一种称呼方式
3、目标对象(Target Object):包含切入点的类
4、通知(Advice):将共性功能抽取走,制作独立的功能模块
5、AOP代理对象(AOP Proxy):运行过程使用AOP创建代理对象进行运行,运行过程中将抽取的功 能执行该过程由AOP自动完成,所以称为AOP代理
6、织入(Weaving):称将抽取的功能加入原始功能运行的整个过程叫做织入(动态)织入控制的是字节码
7、引入(Introduction):完整的方法或成员变量抽取加入的过程叫做引入

AOP实现原理

1、接口+实现类:采用JDK“动态代理”生产代理对象
2、实现类:采用 字节码增强框架cglib

配置切入点
从上往下执行

通知类别

before:前置通知(应用:各种校验)
在方法执行前执行,如果其中抛出异常,在异常前执行
after:后通知(应用:清理现场)
方法执行完毕后执行,无论方法中是否出现异常,都执行
afterReturning:返回后通知(应用:常规数据处理)
方法正常返回后执行,如果方法中抛出异常,无法执行
afterThrowing:抛出异常后通知(应用:包装异常信息)
方法抛出异常后执行,如果方法没有抛出异常,无法执行
around:环绕通知(应用:十分强大,可以做任何事情)
方法执行前后分别执行,可以阻止方法的执行

通知顺序:与配置顺序有关

多个切面间
先声明的before先运行,
后声明的before后运行
先声明的after后运行
后声明的after先运行
总结:配置时以最终运行顺序为准
原创粉丝点击