面向切面编程AOP

面向切面编程(Aspect-Oriented Programming-AOP)以另一种对程序结构的思考方式对面向对象做了补充。AOP中模块化的核心单元为切面(Aspect),Aspect使程序的关注点(事物,日志,认证,消息发送…)模块化。

基本概念

  • 切面 (Aspect)
    横切多个方面(类,对象)的关注点模块
  • 连接点(Join point)
    程序执行过程的某一点(异常处理,方法执行…)
  • 增强(Advice)
    切面在特定的连接点采取的动作,分为before, after, aroud几个类别
  • 切点(Pointcut)
    对连接点匹配的描述,与Pointcut表达式关联的Advice将在Pointcut匹配的Join point处被执行,Pointcut匹配Join point是AOP的核心概念
  • 引入(Introduction)
    为类声明额外的方法或者域
  • 目标对象(Target object)
    被切面增强的原始对象
  • AOP代理(AOP proxy)
    为了实现切面的增强功能而创建的代理对象
  • 编织(Weaving)
    链接切面与其他类,对象以能够生成增强对象的过程

切点匹配连接点作为AOP的核心概念,使AOP不同于一般的拦截技术,AOP通过Advice可以实现跨对象继承体系的Join point功能增强。

Advice分类

  • 前置增强(Before advice)
    在连接点之前被执行的动作,除非抛异常,否则不能打断连接点的执行
  • 后置返回增强(After returning advice)
    在连接点正常执行返回后执行的动作
  • 后置异常增强(After throwing advice)
    在连接点抛出异常返回后执行的动作
  • 后置增强(After advice)
    连接点返回后执行的动作,不管是正常返回还是异常返回
  • 环绕增强(Around advice)
    围绕着连接点的动作,环绕增强可以在连接点之前,之后执行,可以选择是否短路连接点,直接返回或抛出异常

Around advice的功能最强,选择Advice时,在满足需求的前提下,最好选择功能最简单的以提高简洁性和容错性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值